2013-12-21 20 views
2

由于斜线问题,我的部分页面出现重复。 E.g socktail.com/shopsocktail.com/shop/重复且可访问。 请让我知道如何解决这个问题。我是网络技术新手,甚至不知道我的.htaccess文件是否正常。
以下是我的.htaccess的内容,由于尾部斜线造成的重复页面

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(index\.php|javascript|images|robots\.txt) 
RewriteRule ^(.*)$ /index.php?/$1 [L] 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?socktail\.com)$ [NC] 
RewriteRule .? {REQUEST_URI} [R=301,L] 

回答

0

您可以添加一条规则去除斜线与301让你所有的规则是这样的:

RewriteEngine On 

# remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s] 
RewriteRule^/%1 [R=301,L,NE] 

# existing rule 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(index\.php|javascript|images|robots\.txt) 
RewriteRule ^(.+)$ /index.php?/$1 [L] 
1

看起来几乎所有请求都由您的index.php文件处理。您需要将所有带尾随斜杠的请求重定向到无尾斜杠的请求,否则您需要以相反的方式进行操作。在你第一次RewriteRule/RewriteCond

#Remove all trailing slashes 
RewriteRule ^(.*)/$ /$1 [R=301,L] 

或者......

#Make sure all requests end with one 
RewriteRule ^(.*[^/])$ /$1/ 

而且RewriteBase后添加规则,但。