apache关闭.htaccess支持以及修改wordpress的URL重写报错与解决记录

先记录下打开的方法,使用的环境是centos6.5 apache2.4 wordpress

找到apache安装的目录下,然后找到apache配置文件httpd.conf 在conf文件夹中

打开mod_rewrite模块,让apache支持URL重写

去掉注释的#
LoadModule rewrite_module modules/mod_rewrite.so

然后找到 Options FollowSymLinks 下面的AllowOverride None

Options FollowSymLinks 
AllowOverride None 

将AllowOverride None 更改为AllowOverride All 就支持.htaccess文件了,再将这个AllowOverride设置成None就不支持.htaccess文件了

还需要注意的是在配置虚拟主机的时候写AllowOverride None会将这个设置覆盖,如果发现设置不生效,检测下这两处的AllowOverride设置是否一致

因为看到说启用这个.htaccess会影响Apache性能,增加系统消耗,建议不使用.htaccess,但是网站又得需要URL重写功能,实现链接伪静态啥的。所以可以将设置写入文件httpd-vhosts.conf中虚拟主机配置那里。
wordpress里的.htaccess重写代码是这样的

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

不熟悉这些规则的写法,但是得搬代码啊 ,把这段搬到httpd-vhosts.conf中重启apache就报错了

AH00526: Syntax error on line 66 of /安装的路径zhangxingju.com/apache2/conf/extra/httpd-vhosts.conf:
RewriteBase takes one argument, the base URL of the per-directory context

而报错的原因就是不能写这个RewriteBase / 但是看了apache的文档,里面有用这个,就是写法有点不对,没继续研究了,毕竟基础不会,看不懂。最笨的方法就是去掉了RewriteBase / 重启apache就没报错了。访问了下网站,貌似也正常,url也在正确,没有404了。但是当我登录后台的时候才发现,怎么进都是跳回首页,看来还是有问题,没百度到为什么.(PS:9月25 我终于知道为什么了)
百度到RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d 这两个代码的是用来放置真正的文件夹被URL重定向的,灵机一动以前的RewriteBase / 表示根目录所以能识别到 后台是在哪个目录,现在的应该是路径识别错了,于是我改成如下代码

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^index\.php$ - [L]
RewriteCond /www/zhangxingju.com/%{REQUEST_FILENAME} !-f
RewriteCond /www/zhangxingju.com/%{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

其中/www/zhangxingju.com/为网站放置的目录

20160925增加,文章8月3写的,隔了这么久,在看一个关于静态化的教程时发现rewrite规则中用到的方法,如下

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d

原来我之前进后台会跳回首页因为伪静态配置错误,如果不写如上两句代码或者我之前的那种写法。伪静态没有要访问后台的这个规则,网站会认为没有这个页面,但是这是个目录wp-admin,配置了以上代码,就把是目录和是文件的直接访问目录和文件,就不走配置的伪静态规则,代码中的DOCUMENT_ROOT是网站根目录,就不用像我之前把路径写出来了。

看了下DZ论坛的伪静态规则,还是DZ贴心,把规则都写好了,不管是虚拟主机还是apache或者Nnginx,过久还得折腾梧桐树下的改版优化

再次访问后台,成功登录,于是写下这篇记录,折腾linux服务器和php环境,简直头大,还是虚拟主机简单好用,经过两三天的折磨,总算现在的服务器环境算是比较正常能用了