如果未找到匹配项,则Mod_rewrite到 404 页


Mod_rewrite to 404 page if match not found

嘿,我正在尝试对搜索引擎友好的URL进行mod重写,如果找不到文件,则解析为404页面。当我让它适用于未解析为文件(即搜索/.php)的目录时,因为找不到匹配项,那么当找到匹配项时它不起作用。

基本上,当您转到url/search/时,如果有

索引页面并且url/search/文件名应该解析为搜索目录中的文件名.php,我需要它工作。有人知道如何做到这一点吗?

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .? - [S2] #file not found, skip to 404
RewriteRule ^([^'.]+)$ $1.php [NC,L]
RewriteRule .? - [S1] #file found, ignore redirect to 404
RewriteRule (.*) 404.php?file=$1

为什么不只是:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^'.]+)$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) 404.php?file=$1 [L]

而不是所有这些跳过?