apache 升级到2.4.62后rewrite不能正常的工作解决办法

项目下有.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>