仅当目录或文件不存在时才重写Rule

时间:2012-07-25 09:47:35

标签: php .htaccess redirect

我正在尝试使用php和.htaccess创建一个url处理程序,我的问题是,只有在url中输入的文件\目录不存在时,我才知道如何使用重写条件。

4 个答案:

答案 0 :(得分:10)

请查看此RewriteCond资源。

RewriteCond %{REQUEST_FILENAME} !-f
//                                ^ this means file.
RewriteCond %{REQUEST_FILENAME} !-d
//                              ^ this means NOT, "d" means directory.
// Your rewrite rule here.

答案 1 :(得分:3)

它与shell脚本-d和-f函数非常相似。

尝试类似的东西:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule XXX

答案 2 :(得分:2)

  

' - d'(是目录)将TestString视为路径名并进行测试   是否存在,是一个目录。

     

' - f'(是常规文件)将TestString视为路径名并进行测试   它是否存在,是一个常规文件。

以感叹号('!')为前缀,否定其含义。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

答案 3 :(得分:2)

这应该这样做(替换<filename>):

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* <filename> [L]

如果文件,目录或链接不存在,它会进行重定向。