.htaccess rewriterules排除目录

时间:2013-04-10 08:17:03

标签: .htaccess

我制作了所有htaccess rewriterules,但现在我要从中排除所有目录和文件。关于这个htaccess的所有提示都是受欢迎的,因为我没有重写规则的经验......

我发现RewriteCond只能用于后面的第一条规则。 那么如何从所有规则中排除所有文件和目录呢?

Allow from All
RewriteEngine on

SetEnv DEVELOPMENT_ENVIRONMENT true


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

#One url parameter
RewriteRule ^([a-zA-Z0-9_]*)/$ index.php?language=$1
RewriteRule ^([a-zA-Z0-9_]*)$ index.php?language=$1

#Two url parameters
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)$ index.php?language=$1&page=$2
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/$ index.php?language=$1&page=$2

#Three url parameters
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)$ index.php?language=$1&page=$2&feed=$3&message=$3&page_number=$3&id=$3
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/$ index.php?language=$1&page=$2&feed=$3&message=$3&page_number=$3&id=$3

#Four url parameters
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_\-]*)$ index.php?language=$1&page=$2&id=$3
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_\-]*)/$ index.php?language=$1&page=$2&id=$3

#Five url parameters
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)$ index.php?language=$1&page=$2&feed=$3&year=$4&month=$5
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/$ index.php?language=$1&page=$2&feed=$3&year=$4&month=$5

1 个答案:

答案 0 :(得分:1)

  

那么如何从所有规则中排除所有文件和目录?

我想你的意思是:

  

那么如何从所有规则中排除所有文件和目录 THAT EXIST

像这样:

RewriteCond %{REQUEST_FILENAME} -f  [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .*  - [L]

使用上面的设置替换前2 RewriteCond行。