只有默认的永久链接工作 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_optionsrewrite_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 错误的主要内容,如果未能解决你的问题,请参考以下文章

WordPress 永久链接不起作用

网站迁移后,WordPress 永久链接不再起作用

WordPress - 禁用带ID的URL(SEO)

错误 404 帖子名称永久链接 wordpress

Nginx 的 WordPress HTTPS (SSL) 永久链接配置

Wordpress 永久链接在服务器上不起作用