服务器在更换后,环境从Apache2.2升级到Apache2.4,程序配置后好发现Phpcms问答社区(http://www.cmsyou.com/forum/)的伪静态失效了,而.htaccess文件是在的。检查一番发现,Apache2.4与Apache2.2在伪静态规则.htaccess在写法上存在差异,原伪静态规则文件:
RewriteEngine On RewriteBase /forum/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
新的:
RewriteEngine On RewriteBase /forum/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
发现变化了没有?Apache2.4的规则需要多谢一个问号(最后一行)。
其他方面的差别有待发现,Apache2.4的mod_userdir.c模块配置文件默认存放在/etc/httpd/conf.d/userdir.conf 中 ,而Apache2.2则是在主配置文件/etc/httpd/conf/httpd.conf文件中。