在更改了 WordPress 的固定链接后,只要不是在默认格式下,都要用到 .htaccess。但是有些时候,明明已经成功创建了 .htaccess 文件,但是打开 WordPress 还是会出现 404 错误。

这篇博文可以解决两个问题:

  1. WordPress 更改固定链接后出现 404 错误;
  2. Linux 下 Apache 开启伪静态并支持 .htaccess 文件。

 

1、检查 Apache 是否开启了 rewrite_module 模块

创建一个 phpinfo.php 文件,里面输入 <?php phpinfo(); ?>,访问该文件查看环境配置。

利用 Ctrl+F 查找 Loaded Modules,这里列出了所有 apache2handler 开启的模块,查看里面是否含有 mod_rewrite

如果已经包含,则已经开启了 rewrite_module 模块,无需再次开启,请进行第 2 步的设置;

如果没有包含,请打开 Apache 的配置文件 httpd.conf,该文件一般位于 apache/conf/ 目录下,执行 vim httpd.conf,再直接输入 /LoadModule rewrite_module 定位到该语句,按 A 进行编辑,去除 LoadModule rewrite_module 前面的 # 号,(如果没有找到该语句,请在 LoadModule 的区域最后一行加上 LoadModule rewrite_module modules/mod_rewrite.so,必须独立为一行),之后按 Esc 键回到命令状态,输入 :wq 即可保存并退出 httpd.conf,最后再重新启动 Apache 服务。

rewrite_module 模块
rewrite_module 模块

 

2、开启 Apache 对 .htaccess 的支持

很多情况下,第 1 步是已经开启了 mod_rewrite 模块的,但是造成 WordPress 的 404 等原因的是 AllowOverride 设置问题。

打开第 1 步中的 httpd.conf 文件 (vim httpd.conf),直接输入 /AllowOverride,定位到出现 AllowOverride 的位置。

注意:不建议把根目录的 AllowOverride 属性设置成除了 None 外的其他属性,根目录的 AllowOverride 是包含在 <Directory /></Directory> 中的。

AllowOverride
AllowOverride

继续输入 /AllowOverrideAllowOverride 会出现在类似于 <Directory "/data/www/default"> 的节点中,其中 Directory 后面的路径为你想设置开启 .htaccess 支持的站点的路径。按 A 进行编辑,把 AllowOverride None 改为 AllowOverride FileInfo。(博主这里测试不需要设置成 All,FileInfo 同样是不会出错的。)

之后按 Esc 键回到命令状态,输入 :wq,即可保存并退出 httpd.conf,最后再重新启动 Apache 服务。

 

AllowOverride讲解:(详细请点这里

通常利用 Apache 的 rewrite 模块对 URL 进行重写的时候, rewrite 规则会写在 .htaccess 文件里。但要使 Apache 能够正常的读取 .htaccess 文件的内容,就必须对 .htaccess 所在目录进行配置。从安全性考虑,根目录的 AllowOverride 属性一般都配置成不允许任何 Override ,即

<Directory />
AllowOverride None
</Directory>

在 AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 .htaccess 作用域的指令都允许出现在 .htaccess 文件中。

 

3、没了…已经开启了伪静态并支持 .htaccess 文件

如果还发现有问题,欢迎留言


原创文章,转载请以链接形式注明出处:http://blog.ttionya.com/article-390.html