当查询不是有效目录时,重定向的重写符是什么

时间:2012-02-20 09:45:32

标签: apache .htaccess mod-rewrite url-rewriting rewrite

我想在.htaccess文件中写一个重写文件来重定向所有未指定有效目录名的请求。

例如如果我的网站根目录中有1个文件夹测试和1个文件 index.php 。我的要求是,所有请求 test 文件夹或子文件夹中的页面的请求都不会被mod_rewrite重写,并且所有其他不以test开头的请求都将被重写为 index.php < /强>

P.S。文件夹的数量及其名称经常更改,这就是为什么我要查找一个通用的重写文件来检查有效的目录名称。

上述情况下会有什么重写?

1 个答案:

答案 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表示不是常规文件。