htaccess - 测试重写的网址

时间:2013-02-14 23:12:02

标签: .htaccess mod-rewrite

我有以下代码,其中包含“www.example.com/foo”等网址,并将其重写为“www.example.com/html/foo.php”

RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^([^\.]+)$ html/$1.php [NC]

我想修改这个,如果重写的网址:'www.example.com/html/foo.php'不存在,则网址会被重写为'www.example.com/html/fallback.php ?查询=富'

我已经在圈子里走了几个小时。任何解决方案?

1 个答案:

答案 0 :(得分:2)

您可以尝试先检查文件是否存在(使用-f),然后再进行重写:

RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_URI} ^([^\.]+)$
RewriteCond %{DOCUMENT_ROOT}/html/%1.php !-f
RewriteRule ^ html/fallback.php?query=%1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ html/$1.php [L]