找不到 WordPress 永久链接 404
Wordpress permalinks 404 not found
我想将我的永久链接结构修改为 /%postname%/ 以便在 wordpress 网站服务器上使用 Buddypress。
经过一些尝试,我遇到了一些麻烦,即使我在不同的论坛上搜索,我也不知道如何解决。
我的 .htaccess 权限是试用版 666,所以 wordpress 必须修改这个文件,但不会(最后一个文件在我的服务器安装时修改)。在数据库中,永久链接结构已成功传递给 %postname%。
现在,我想访问的所有页面都出现 404 错误。
.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
我 运行 Apache,所以为了强制选择 vars,我在 wp-include/vars.php 中修改为:
//$is_apache = (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false);
$is_apache = 1;
我现在要做什么?
#
编辑:我已经重新安装了它,重试所有这些,同样的问题...Apache 是该文件的所有者所以我真的不明白...
如果您能够访问 wp-admin 面板,请尝试将永久链接结构更新为 "Plain",然后检查您是否仍然收到 404 页面错误。
根据Wordpress的权限of.htaccess应该是604。申请这个权限并检查一下。
600 -rw------- /home/user/wp-config.php
604 -rw----r-- /home/user/cgi-bin/.htaccess
600 -rw------- /home/user/cgi-bin/php.ini
711 -rwx--x--x /home/user/cgi-bin/php.cgi
100 ---x------ /home/user/cgi-bin/php5.cgi
好的,问题我已经解决了
这个问题,我没有在我的问题解释中指定它,是我使用 Virtualhost(我在这个服务器上也有一个监控网站所以我想分开所有的任务,日志等......),虚拟主机和这条指令有问题:
RewriteBase /
事实上,这在普通的 apache 环境中有效,但在虚拟主机中无效。
所以我必须做的是将我的 .htaccess 内容移动到 vhost conf.d 文件中:
<VirtualHost *:80>
ServerAdmin nfrbezar@vdbassocies.fr
ServerName intranet.vdb.local
ServerAlias intranet
DocumentRoot /var/www/vhosts/intranet/html
ErrorLog /var/www/vhosts/intranet/logs/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/www/vhosts/intranet/logs/access.log combined
<Directory "/">
RewriteEngine On
AllowOverride None
Allow from 10.1.1.0/8
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
</Directory>
</VirtualHost>
通过这种方式,它现在可以工作了!
抱歉没有告诉你这是一个虚拟主机,我认为这对解决问题并不重要,即使我认为这是一个 apache 问题。
即使我在带有 apache 服务器的 aws ubuntu 机器上部署我的 wordpress 站点时也遇到了同样的问题
如果您在 /var/www/html
中部署了您的 wordpress 站点,我们必须在 000-default.conf 中添加此行
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
然后我们必须重启 apache 服务器 sudo service apache2 restart
还要确保具有必要权限的 .htaccess 在 /var/www/html 中,即使 wordpress 安装在不同的文件夹中也是如此
在我的例子中是缓存(Redis 用作对象缓存)。
更改永久链接设置后,WordPress 使用了新的 URL,但都导致了 HTTP 404 Not Found 错误。
刷新缓存(例如使用 WP CLI,wp @production cache flush
)解决了这个问题。
我想将我的永久链接结构修改为 /%postname%/ 以便在 wordpress 网站服务器上使用 Buddypress。
经过一些尝试,我遇到了一些麻烦,即使我在不同的论坛上搜索,我也不知道如何解决。
我的 .htaccess 权限是试用版 666,所以 wordpress 必须修改这个文件,但不会(最后一个文件在我的服务器安装时修改)。在数据库中,永久链接结构已成功传递给 %postname%。
现在,我想访问的所有页面都出现 404 错误。
.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
我 运行 Apache,所以为了强制选择 vars,我在 wp-include/vars.php 中修改为:
//$is_apache = (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false);
$is_apache = 1;
我现在要做什么?
#编辑:我已经重新安装了它,重试所有这些,同样的问题...Apache 是该文件的所有者所以我真的不明白...
如果您能够访问 wp-admin 面板,请尝试将永久链接结构更新为 "Plain",然后检查您是否仍然收到 404 页面错误。
根据Wordpress的权限of.htaccess应该是604。申请这个权限并检查一下。
600 -rw------- /home/user/wp-config.php
604 -rw----r-- /home/user/cgi-bin/.htaccess
600 -rw------- /home/user/cgi-bin/php.ini
711 -rwx--x--x /home/user/cgi-bin/php.cgi
100 ---x------ /home/user/cgi-bin/php5.cgi
好的,问题我已经解决了
这个问题,我没有在我的问题解释中指定它,是我使用 Virtualhost(我在这个服务器上也有一个监控网站所以我想分开所有的任务,日志等......),虚拟主机和这条指令有问题:
RewriteBase /
事实上,这在普通的 apache 环境中有效,但在虚拟主机中无效。
所以我必须做的是将我的 .htaccess 内容移动到 vhost conf.d 文件中:
<VirtualHost *:80>
ServerAdmin nfrbezar@vdbassocies.fr
ServerName intranet.vdb.local
ServerAlias intranet
DocumentRoot /var/www/vhosts/intranet/html
ErrorLog /var/www/vhosts/intranet/logs/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/www/vhosts/intranet/logs/access.log combined
<Directory "/">
RewriteEngine On
AllowOverride None
Allow from 10.1.1.0/8
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
</Directory>
</VirtualHost>
通过这种方式,它现在可以工作了!
抱歉没有告诉你这是一个虚拟主机,我认为这对解决问题并不重要,即使我认为这是一个 apache 问题。
即使我在带有 apache 服务器的 aws ubuntu 机器上部署我的 wordpress 站点时也遇到了同样的问题 如果您在 /var/www/html
中部署了您的 wordpress 站点,我们必须在 000-default.conf 中添加此行 <Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
然后我们必须重启 apache 服务器 sudo service apache2 restart
还要确保具有必要权限的 .htaccess 在 /var/www/html 中,即使 wordpress 安装在不同的文件夹中也是如此
在我的例子中是缓存(Redis 用作对象缓存)。
更改永久链接设置后,WordPress 使用了新的 URL,但都导致了 HTTP 404 Not Found 错误。
刷新缓存(例如使用 WP CLI,wp @production cache flush
)解决了这个问题。