我有以下代码,其中包含“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 ?查询=富'
我已经在圈子里走了几个小时。任何解决方案?
答案 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]