只有默认的永久链接工作 wordpress 其他人变成 404 错误
Posted
技术标签:
【中文标题】只有默认的永久链接工作 wordpress 其他人变成 404 错误【英文标题】:only default permalinks working wordpress others become 404 error 【发布时间】:2014-04-25 09:31:14 【问题描述】:我的问题是在我的 wordpress 站点中,只有默认的永久链接在工作。当我更改永久链接时,所有页面都找不到了。只有主页显示。
当我将永久链接更改为 postname .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
默认是
# BEGIN WordPress
# END WordPress
也尝试使用这个来获取 mod_rewrite 的状态
in_array( 'mod_rewrite', apache_get_modules())
它返回 1 并且在我的服务器上启用了 mod_rewrite,并且还使用 phpinfo() 进行了检查。 mod_rewrite
模块已加载..我浏览了互联网上所有可用的文档..请帮我解决这个问题..我的托管服务器是 godaddy..
【问题讨论】:
【参考方案1】:如果您使用的是 Ubuntu,请编辑文件 /etc/apache2/apache2.conf(这里有 /var/www 的示例):
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
并将其更改为:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
同时检查您网站的 Apache 配置文件 /etc/apache2/sites-available/your_site.conf:
<Directory /var/www/your_site_path/>
AllowOverride None
</Directory>
并将其更改为:
<Directory /var/www/your_site_path/>
AllowOverride All
</Directory>
你需要做 sudo a2enmod rewrite 来启用模块重写
那么,
sudo service apache2 重启
希望对您有所帮助!
【讨论】:
【参考方案2】:这可能是您数据库中的 rewrite_rules
字段损坏。
我将“Yoast SEO”安装到一个实时站点中,这完全破坏了它。我禁用了插件,但它没有恢复工作。只有默认的永久链接有效。
像其他人一样,我尝试了通常的方法——检查.htaccess
,确保mod_rewrite
在服务器上工作,再次保存永久链接设置,但没有任何工作。主页会加载,wp-admin
页面会加载,但其他所有内容都只是加载“最新帖子”默认页面。
最后发现数据库中wp_options
的rewrite_rules
字段有问题。
我拥有该网站的三个版本(本地、临时和生产),并且都来自一个 SVN 基地,所以我知道这不是文件问题。但只有本地开发版本在工作。
我用本地开发站点中的工作站点替换了损坏的实时站点的 rewrite_rules
字段的内容,并且它起作用了。
真正奇怪的是,删除 rewrite_rules
字段并让 WordPress 重建它并没有解决问题。只有用网站以前工作版本的内容替换才能达到目的。
我仍然对此感到困惑,如果我发现有关此问题的任何进一步信息,我会编辑此回复。
【讨论】:
【参考方案3】:我遇到了完全相同的问题并通过运行解决了它
sudo a2enmod rewrite
然后重新启动apache。显然问题是由mod_rewrite
引起的,可能无法在 ubuntu 上正常工作。
我找到了解决方案here
【讨论】:
我安装了带有“AllowOverride None”和“modRewrite disabled”的WP,这是aws 上新的ubuntu 安装中的默认conf 解决了将AllowOverride All 放在网站目录配置中,并且sudo a2enmod rewrite 如你所说谢谢【参考方案4】:遇到了同样的问题。在 SSL 上拥有站点必须更改不是 000-default.conf 而是相应的 SSL conf 文件。添加
在 DocumentRoot /var/www/html 之后
the following
<Directory "/var/www/html">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
然后重新启动 apache2 保存了我的网站.... 没有其他工作。问题是 Wordpress SSL 和 SEO 插件弄乱了配置文件。
【讨论】:
【参考方案5】:不确定这是否为时已晚。我遇到了同样的问题并通过更改解决了
AllowOverride None
到
AllowOverride All
在 /etc/apache2/sites-enabled/000-deafult.conf 文件中。希望这会有所帮助。
【讨论】:
在 000-deafult.conf 文件中我没有找到 AllowOverride None 和 AllowOverride All【参考方案6】:我在 CentOS7 上安装的 Wordpress 中遇到了这个问题,解决方案是使用以下命令编辑 httpd.conf 文件:
sudo vi /etc/httpd/conf/httpd.conf
然后替换
<Directory "/var/www/wordpress">
Options Indexes FollowSymLinks
AllowOverride none
Require all granted
</Directory>
与
<Directory "/var/www/wordpress">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
然后重启 Apache:
sudo systemctl restart httpd.service
【讨论】:
以上是关于只有默认的永久链接工作 wordpress 其他人变成 404 错误的主要内容,如果未能解决你的问题,请参考以下文章