在更改了 WordPress 的固定链接后,只要不是在默认格式下,都要用到 .htaccess
。但是有些时候,明明已经成功创建了 .htaccess
文件,但是打开 WordPress 还是会出现 404 错误。
这篇博文可以解决两个问题:
- WordPress 更改固定链接后出现 404 错误;
- 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 服务。
2、开启 Apache 对 .htaccess 的支持
很多情况下,第 1 步是已经开启了 mod_rewrite 模块的,但是造成 WordPress 的 404 等原因的是 AllowOverride
设置问题。
打开第 1 步中的 httpd.conf 文件 (vim httpd.conf
),直接输入 /AllowOverride
,定位到出现 AllowOverride
的位置。
注意:不建议把根目录的 AllowOverride
属性设置成除了 None
外的其他属性,根目录的 AllowOverride
是包含在 <Directory /></Directory>
中的。
继续输入 /AllowOverride
,AllowOverride
会出现在类似于 <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 文件
如果还发现有问题,欢迎留言
原创文章,转载请以链接形式注明出处:https://blog.ttionya.com/article-390.html