我想在.htaccess文件中写一个重写文件来重定向所有未指定有效目录名的请求。
例如如果我的网站根目录中有1个文件夹测试和1个文件 index.php 。我的要求是,所有请求 test 文件夹或子文件夹中的页面的请求都不会被mod_rewrite重写,并且所有其他不以test开头的请求都将被重写为 index.php < /强>
P.S。文件夹的数量及其名称经常更改,这就是为什么我要查找一个通用的重写文件来检查有效的目录名称。
上述情况下会有什么重写?
答案 0 :(得分:0)
在.htaccess
DocumentRoot
中执行此操作
RewriteEngine on
RewriteBase /
Rewritecond %{REQUEST_FILENAME} !-f
Rewritecond %{REQUEST_FILENAME} !-d
Rewritecond %{REQUEST_FILENAME} !-l
RewriteRule ^ index.php [L]
来自rewritecond apache docs :
-f
,-d
&amp; -l
是CondPatterns的变种。而不是真正的正则表达式字符串。
- ' - d'(是目录) 将TestString视为路径名并测试它是否存在,并且是一个目录。
- ' - f'(是常规文件) 将TestString视为路径名并测试它是否存在,并且是常规文件。
- ' - l'(是符号链接) 将TestString视为路径名并测试它是否存在,并且是一个符号链接。
如果以感叹号('!')作为前缀,则会导致否定其含义。即!-f
表示不是常规文件。