我制作了所有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
答案 0 :(得分:1)
那么如何从所有规则中排除所有文件和目录?
我想你的意思是:
那么如何从所有规则中排除所有文件和目录 THAT EXIST ?
像这样:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
使用上面的设置替换前2 RewriteCond
行。