如果未找到匹配,则将Mod_rewrite设置为404页面

时间:2013-11-08 00:00:08

标签: php regex apache .htaccess mod-rewrite

嘿我试图对搜索引擎友好的网址进行模式重写,如果找不到该文件,则会解析为404页面。当我将其用于不能解析为文件的目录(即搜索/ .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

1 个答案:

答案 0 :(得分:2)

为什么不呢:

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]

而不是所有这些跳过?