由于尾随斜杠问题,我的某些网页会重复。
E.g socktail.com/shop
和socktail.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 :(得分:1)
看起来几乎所有请求都由index.php文件处理。您需要使用尾部斜杠将所有请求重定向到没有尾部斜杠的请求,否则您需要以相反的方式执行此操作。
#Remove all trailing slashes
RewriteRule ^(.*)/$ /$1 [R=301,L]
或者...
#Make sure all requests end with one
RewriteRule ^(.*[^/])$ /$1/
在RewriteBase
之后,但在您的第一个RewriteRule
/ RewriteCond
之前添加该规则。
答案 1 :(得分: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]