使用.htaccess“忽略”文件

时间:2012-10-31 20:29:41

标签: .htaccess

是否可以忽略RewriteRules目录中的所有实际文件?我的意思是,我正在创建page.php处理的“flatlinks”或“permalinks”(http://example.com/not/an/actual/file/path/)。这仅在我“忽略”所有其他RewriteCond文件时才有效。而不是为.htaccess文件中的目录中的每个真实文件创建RewriteCond有没有办法告诉它检查是否有实际文件显示,如果没有让page.php处理它?

RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteCond %{REQUEST_URI} !^/somefile\.php$
RewriteCond %{REQUEST_URI} !^/someotherfile\.php$
RewriteCond %{REQUEST_URI} !^/page\.php$
RewriteRule ^([^/]*)$ /page.php?p=$1 [L] [NC]

2 个答案:

答案 0 :(得分:1)

是的,这是非常有可能的。在现有代码之前添加这些行:

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]

答案 1 :(得分:1)

以下表示只有在磁盘上不存在请求的文件(-f)或文件夹(-d)(!)时才应执行重定向:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /page.php?p=$1 [L,NC]