2013-12-21 6 views
2

슬래시 문제로 인해 일부 페이지가 중복되었습니다. 예 : socktail.com/shopsocktail.com/shop/은 중복되어 있으며 액세스 할 수 있습니다. 이 문제를 해결하는 방법을 알려주세요. 나는 웹 기술에 익숙하지 않고 .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)와 후행 슬래시 제거에 대한 규칙을 추가 할 수 있습니다, 내 htaccess로의 내용이다 :

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 파일에 의해 처리됩니다. 후행 슬래시가있는 모든 요청을 후행 슬래시가없는 요청으로 리디렉션하거나 다른 방법으로 처리해야합니다.

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

또는 ...

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

그리고 RewriteBase 후 그 규칙을 추가 할 수 있지만 첫 번째 RewriteRule/RewriteCond 전에.

관련 문제