Php 如果未找到匹配项,则将Mod_重写到404页

Php 如果未找到匹配项,则将Mod_重写到404页,php,regex,apache,.htaccess,mod-rewrite,Php,Regex,Apache,.htaccess,Mod Rewrite,嘿,我正在尝试对搜索引擎友好的URL进行mod重写,如果找不到文件,这些URL将解析为404页面。当我在没有找到匹配项而无法解析为文件的目录(即search/.php)中使用它时,如果找到匹配项,它就不起作用 基本上,当您转到url/search/如果有索引页,并且url/search/filename应该解析为搜索目录中的filename.php时,我需要它工作。有人知道如何做到这一点吗 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f

嘿,我正在尝试对搜索引擎友好的URL进行mod重写,如果找不到文件,这些URL将解析为404页面。当我在没有找到匹配项而无法解析为文件的目录(即search/.php)中使用它时,如果找到匹配项,它就不起作用

基本上,当您转到url/search/如果有索引页,并且url/search/filename应该解析为搜索目录中的filename.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]
而不是所有这些跳跃