如果文件存在,如何创建Apache RewriteRule来重写?

时间:2014-03-09 00:27:44

标签: apache mod-rewrite

我正在使用我没写的.htaccess文件

RewriteEngine On
RewriteRule ^(foo|bar|baz|bof|x|y|z)(/.*)?$ $1.php

此规则对应于现有的.php文件

  • foo.php
  • bar.php
  • baz.php
  • bof.php
  • x.php
  • y.php
  • z.php

我是否有可能编写一个包罗万象的规则,但只有在$1.php存在时才会重写?

我正在尝试这样的事情

RewriteRule ^(\w+)(/.*)?$ $1.php

但是,请考虑此路径

/helloworld/1/2/3 => helloworld.php

这里的问题是helloworld.php不存在。我不想重写这条道路。

我只想重写 IF $1.php存在

1 个答案:

答案 0 :(得分:1)

使用RewriteCond前缀

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(\w+).*$ $1.php

RewriteCond可以反直觉地使用$1,因为RewriteRule匹配(但不是替换)总是先发生。