项目下有.htaccess文件,里面配置了路由规则,如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
升级前访问域名(不带路径,比如http://yidianhulian.com)会正确进入系统。
但在升级后,访问域名却把项目里面的文件列出来了(Options All),并没有按规则进入index.php文件。
排查下来的原因是新版本apache,在访问域名(不带路径,比如http://yidianhulian.com)时RewriteCond %{REQUEST_FILENAME} !-d 这个条件是不成立的,导致没有进入RewriteRule,猜测新版本把只访问域名也当做对是对工作目录对直接访问了?
解决办法,针对只访问域名的情况再加上一个规则RewriteRule ^$ index.php [QSA,L],变成如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>