htaccess尾斜杠

问题描述:

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] 

我遇到了这个问题,希望有人能帮助我。htaccess尾斜杠

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] 
+0

这个htaccess在哪里?它在/ dir? – arnaud576875

+0

是是是是 – ramirez

变化

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] 
+0

与CSS和JS相同的问题 – ramirez

+0

您的js/css链接看起来像什么(src' /'href'属性的内容)? – DaveRandom

+0

http://www.domain.com/css/style.css – ramirez

尝试通过这一个替换第一RewriteRule

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

这明确允许尾随斜线在末端。

+0

用于使最后一个斜杠可选。 – Cyclone

+0

它可以工作,但CSS和JS崩溃了... – ramirez

+0

在规则之前添加重写条件,如果请求的文件不存在,请不要重写(请参阅我的更新回答) – arnaud576875