2009-12-12 61 views
0

我有一个网站,我不认为我的htaccess正在实施301重定向,我认为我的问题可能是在应用程序级别,但如果有人可以确认以下作品,我会很感激它,因为我期望它。我的重定向不删除最后一个斜杠?

示例重定向:http://www.siteic.com/a/b/c/应该去http://www.siteic.com/a/b/c - 但是下面不这样做。 通知删除尾部斜线。

Options +FollowSymLinks 
RewriteEngine on 
ErrorDocument 404/

RewriteCond %{HTTP_HOST} ^siteic\.com 
RewriteRule ^(.*)$ http://www.siteic.com/$1 [R=permanent,L] 

RewriteCond {REQUEST_URI} ^/first/$ 
RewriteRule ^(.*)$ http://www.siteic.com [R=permanent,L] 

RewriteCond {REQUEST_URI} ^/first$ 
RewriteRule ^(.*)$ http://www.siteic.com [R=permanent,L] 

RewriteRule ^first/([a-z,\_%,A-Z,\_%-,0-9,\-]*)$ otherst.php?page=$1 
RewriteRule ^first/([a-z,\_%,A-Z,\_%-,0-9,\-]*)/([a-z,\_%,A-Z,\_%-,0-9,\-]*)$ otherst.php?page=$1&page2=$2 
+0

坦白地说,没有规则,会匹配'/ A/b/C /'。 – Gumbo 2009-12-12 22:29:15

回答

1

我会怀疑你第一个规则是永远是真的,因此后续的规则永远不会被使用。

您应该使用来代替:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www.your_domain.com$ 
RewriteRule ^(.*)$ http://www.your_domain.com/$1 [R=301] 

你的第二个规则使确保所有URI以字符串“/首/”重定向到主页。 你的第三条规则与字符串'/ first'完全一样,所以实际上你可以删除你的第二条规则,或者你的第三条规则取决于你想要的行为。

你的第四条规则永远不会匹配,因为具有“first /”的uri将被重定向到主页。 你的第五规则应该比你的第四个规则之前,因为第4条规则将更加频繁真的比规则5.

至于你的要求:如何删除结尾的斜线,我这样做: - 首先确保路径指向一个不存在的目录 - 如果为true,去掉斜线

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/$ /$1 [R=301,L] 

所以在最后我会做到这一点:

RewriteEngine on 
# force WWW in the url 
RewriteCond %{HTTP_HOST} !^www.siteic.com$ 
RewriteRule ^(.*)$ http://www.siteic.com/$1 [R=301] 

# remove trailing slash if the url points to a non-existing folder 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/$ /$1 [R=301,L] 

# redirects all url with /first to otherst.php 
## with 2 GET vars 
RewriteRule ^first/([a-z,\_%,A-Z,\_%-,0-9,\-]*)/([a-z,\_%,A-Z,\_%-,0-9,\-]*)$ 
otherst.php?page=$1&page2=$2 

## with 1 GET var 
RewriteRule ^first/([a-z,\_%,A-Z,\_%-,0-9,\-]*)$ otherst.php?page=$1 
+0

刚试过这个,它不能解决我的问题。 :( - 它仍然做我上面的代码做的。它不会做'http:// www.siteic.com/a/b/c /'重定向到'http://www.siteic.com/a/b/c' - 注意斜杠。授予你的代码更清洁,更高效,更合理。 – Abs 2009-12-12 21:37:36

+0

我已经更新了你的请求。 – pixeline 2009-12-12 22:02:09