上一次错误遗留了不良链接,我试图用301 RedirectMatch清理我的混乱。
正确的URL格式如下:
http://www.example.com/aaa-directory/page
http://www.example.com/bbb-directory/page
http://www.example.com/ccc-directory/page
(等)
但是,之前有一些链接到以下网页的错误链接:
http://www.example.com/aaa-directory//page
http://www.example.com/bbb-directory//page
http://www.example.com/ccc-directory//page
(双反斜杠//何时应为单/)
我已修复了错误的链接,但我仍然会收到外部链接和/或机器人抓取,这些链接会转到那些错误的网址。
我想使用RedirectMatch 301,以便任何带有文字的链接" -directory//
"将重定向到与" -directory/
"。
因此,http://www.example.com/ccc-directory//page
将被重定向到:
http://www.example.com/ccc-directory/page
我正在努力学习语法。任何帮助将不胜感激!
(不确定是否需要,但我目前的HTACCESS文件如下):
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
答案 0 :(得分:1)
在内部重写规则之前保留重定向规则,并有另一条规则来处理//
RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} \s/+(.*?)/+(/\S*) [NC]
RewriteRule ^ %1%2 [R=301,L,NE]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]