htaccess尾随斜线

时间:2011-08-21 18:42:03

标签: apache .htaccess mod-rewrite

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)$ /dir/index.php?category=$1&link=$2 [L]
RewriteCond %{REQUEST_URI} !\.[^./]+$ 
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.mydomain.com/dir/$1/$2 [R=301,L]

我遇到了这个问题,我希望有人会帮助我。

www.domain.com/dir/category/

运作良好,但涉及到第二个变量

www.domain.com/dir/category/variable/

它不起作用,但是如果我删除最后一个斜线,它就可以工作......

修改----------------------------

到目前为止一切正常。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/?$ /dir/index.php?category=$1&link=$2 [L]


RewriteCond %{REQUEST_URI} !\.[^./]+$ 
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.omain.com/dir/$1/$2 [R=301,L]

2 个答案:

答案 0 :(得分:1)

尝试用此替换第一个RewriteRule

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^([^/]*)/([^/]*)/?$ /dir/index.php?category=$1&link=$2 [L]

这明确允许在结尾处使用尾部斜杠。

答案 1 :(得分:0)

更改

RewriteRule ^([^/]*)/([^/]*)$ /dir/index.php?category=$1&link=$2 [L]

RewriteRule ^([^/]*)/([^/]*)([^\.css|\.js])/?$ /dir/index.php?category=$1&link=$2$3 [NC,L]

编辑这是一个大规模的警察,我希望在某个时候用一条线规则更新这一点,但是现在这样做会有用(我的大脑不再正常工作了) )。这假设您的JS位于名为'js'的目录中,而CSS位于名为'css'的目录中。这些规则的顺序很重要!

RewriteRule ^(css|js)/(.*)$ /dir/$1/$2 [L]
RewriteRule ^([^/]*)/([^/]*)/?$ /dir/index.php?category=$1&link=$2 [L]