Php 仅当目录或文件不存在时重写规则
我正在尝试使用php和.htaccess创建url处理程序,我的问题是,只有在url中输入的文件\目录不存在时,我才知道如何使用重写条件。这与shell脚本-d和-f函数非常类似 试试这样:Php 仅当目录或文件不存在时重写规则,php,.htaccess,redirect,Php,.htaccess,Redirect,我正在尝试使用php和.htaccess创建url处理程序,我的问题是,只有在url中输入的文件\目录不存在时,我才知道如何使用重写条件。这与shell脚本-d和-f函数非常类似 试试这样: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule XXX 请查看此资源 RewriteCond %{REQUEST_FILENAME} !-f //
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule XXX
请查看此资源
RewriteCond %{REQUEST_FILENAME} !-f
// ^ this means file.
RewriteCond %{REQUEST_FILENAME} !-d
// ^ this means NOT, "d" means directory.
// Your rewrite rule here.
“-d”(is directory)将TestString视为路径名并进行测试
它是否存在,并且是一个目录
“-f”(是常规文件)将TestString视为路径名并进行测试
是否存在,并且是否为常规文件
以感叹号(“!”)作为前缀以否定其含义
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
这应该可以做到(替换
):
重新编写引擎打开
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-L
重写规则。*[L]
如果文件、目录或链接不存在,它会进行重定向。也就是说:如果请求的文件名是一个存在的文件,并且是一个存在的目录,您甚至可以尝试搜索吗?嗯,我确实搜索过它。请注意,这只适用于
块或.htaccess
文件,而不是在
或根配置上下文中,其中请求\u文件名尚未使用完整路径完成(因为它未知)。在这些上下文中,路径的一部分必须手动添加到测试中,因为REQUEST_FILENAME将与REQUEST_URI相同。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* <filename> [L]