.htaccess与目录不匹配的RewriteRule

时间:2015-03-20 16:28:59

标签: .htaccess mod-rewrite

我有 .htaccess 规则:

RewriteRule ^([a-z]{2,3}|[a-z]{2}-[a-z]{3})/?$ /dashboard.php?lang=$1 [QSA,L]

$ 1值可以是具有以下结构的任何值:

  • xx /例如:es,en,it,fr,ja,mww
  • xx-xxx /例如:zh-cht(chinese)

所以,如果用户去了:

  • mydomain.com/de>>它确实打开了mydomain.com/dashboard.php?lang=de

工作正常......但我在webroot目录中也有一些目录可以(并且会)混淆web服务器。例如:

  • mydomain.com/pap>>这是一个包含某些页面的目录,而不是将其识别为目录,Web服务器会尝试像mydomain.com/dashboard.php?lang=pap
  • 一样处理它。
  • mydomain.com/img>>你明白了......
  • mydomain.com/css>>你明白了......

问题是:.htaccess如何避免当前规则中已存在的目录?

1 个答案:

答案 0 :(得分:1)

尝试添加条件:

 RewriteCond %{REQUEST_FILENAME} !-d

正好在规则之上。此条件检查-d(是现有目录)是否为false。因此,对目录的请求将失败,并且规则将不会被执行。