Apache - mod_rewrite文件扩展名重写

时间:2018-03-17 04:50:22

标签: apache .htaccess mod-rewrite

对于重写扩展,我找到了以下规则集

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]

但是这些规则对于不存在的文件/目录失败,因为它们在每个重定向以无限循环结束后不断添加.php

在现有规则中是否可以更改某些内容以解决此问题,还是需要删除L标志并在此之后添加另一个条件和规则来检查*.php文件是否存在?

  

我使用的是apache 2.2,因此END标志不适用

1 个答案:

答案 0 :(得分:1)

  

在现有规则中是否可以更改某些内容以解决此问题,或者我是否需要删除L标志并在此之后添加另一个条件和规则以检查* .php文件是否存在?

不要删除L标记,正如您所说的那样,在应用之前,您应该添加条件以检查不存在的文件是否为.php,但是在规则之后不是,如此:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule (.*)  $1.php [L]