新服务器的Apache Rewrite问题

新装了一台服务器(CentOS 7.3, Apache 2.4.6, PHP 7.1.6),迁移网站应用到上面,网站文件都放在 /var/www/目录下。访问时候发现如下问题:

采用ThinkPHP开发的A应用,可以通过 http://www.a.com/index.php/Home/Abc/def 来访问

但不能通过 http://www.a.com/Home/Abc/def 来访问

也就是访问地址中没法省略掉index.php。一开始把PathInfo 和Rewrite搞混淆了,以为是前者的问题。

后来发现其实这明显是 Rewrite的问题,因为虽然ThinkPHP代码根目录下面默认有.htaccess文件,但服务器的配置有可能禁止站点自行配置。从以上症状来看正是Rewrite规则根本没起作用。

最后找到开关其实在这里:

找到apache配置文件:/etc/httpd/conf/httpd.conf

找到 对应目录的配置处,修改 AllowOverride All:

<Directory “/var/www”>
AllowOverride All
</Directory>

解决WordPress站点的固定链接不工作的问题

出于对站点SEO的考虑,决定将之前默认的固定链接形式由?p=n 改为%postname%。

结果在wordpress里面改完设置后,访问链接的时候发生404错误。

网上有说法是.htaccess文件的权限问题,建议删除后再设置固定链接一次,以便重新生成.htaccess文件。我试了没用。

后来发现是mod_rewrite的权限问题。需要在httpd.conf中,将Directory的AllowOverride 由None改为All。改完后一切OK。

详情可参阅这篇文章