我一直在 ubuntu 服务器(amazone)上开发一个网站,进入页面时出现 404 错误。
我将提供与该问题相关的所有信息。
在 WordPress 上
刷新页面:
我遵循了本教程:
https://wordpress.org/support/topic/solved-permalinks-working-in-apache2-ubuntu-1010?replies=6
但什么也没帮助。
我找到了这个帖子https://wordpress.org/support/topic/permalink-does-not-work-apart-from-default?replies=12- 因此我输入了文件:/etc/apache2/sites-enabled/000-default.conf
并没有发现AllowOverride None
要更改为AllowOverride All
所以我自己在这里添加了它:
重启 apache,出现错误。刷新网站后发现无法运行。
撤消AllowOverride All
自000-default.conf
这个问题的解决方案是什么?我从未使用过 Linux 服务器,因此我需要一个非常清晰且解释清楚的答案。
顺便说一下,这是 WP 在我的 .htaccess 文件中生成的内容:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
答案1
打开终端并输入:
sudo gedit /etc/apache2/apache2.conf
找到这个:
<Directory /var/www/>
改成AllowOverride None
AllowOverride All
然后运行:
sudo a2enmod rewrite
不要忘记重新启动 apache2:
sudo service apache2 restart
答案2
您可以检查 WordPress 主目录中是否存在 htaccess 文件,如上所示。如果不存在,请创建一个:
$ sudo nano /var/www/html/.htaccess
并将以下内容复制粘贴到其中
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule># END WordPress
按 ctrl+x 并按 y 保存文件。然后通过以下方式重新启动 apache:
$ sudo 服务 apache2 重启
您可能希望告诉 apache 遵循您的 .htaccess 文件。您可以通过编辑 apache.conf 文件来做到这一点
$sudo nano /etc/apache2/apache.conf
向下滚动到该行默认情况下它将是:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
将 AllowOverride 的值更改为 All,现在变成:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
按 ctrl+x 并按 y 保存配置文件。为了对服务器进行此更改,首先启用 mod_rewrite。
$ sudo a2enmod rewrite
然后重启服务器
$ sudo service apache2 restart
完毕!
来源:https://www.wst.space/riddling-with-wordpress-permalink-setup-issues/