1

嘿,我正在尝试对搜索引擎友好的 URL 进行 mod-rewrite,如果找不到文件,这些 URL 会解析为 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
4

1 回答 1

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]

而不是所有这些跳过?

于 2013-11-08T00:09:08.533 回答