【问题标题】:RedirectMatch 301 to change part of URLRedirectMatch 301 更改部分 URL
【发布时间】:2014-06-27 18:19:09
【问题描述】:

以前的错误留下了错误的链接,我正在尝试使用 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

(双反斜杠//什么时候应该是单/)

我已经修复了错误链接,但我仍然会收到指向这些错误 URL 的外部链接和/或机器人抓取。

我想使用 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]

【问题讨论】:

    标签: .htaccess url mod-rewrite redirect url-redirection


    【解决方案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]
    

    【讨论】:

    • 谢谢,但不太奏效。如果我输入 www.example.com/aaa-directory//page,它会将我带到一个相当奇怪的 URL,如下所示:example.com/home3/username/public_html/example.com/…。那个奇怪的 URL 至少将双反斜杠改为单反斜杠......所以也许我们正在取得进展?还有什么建议吗?
    • @anubhava 一如既往,对您的 Apache RewriteRule 知识印象深刻。对社区来说是一项了不起的资产!
    • @JakeGould:非常感谢您的客气话。
    • @anubhava 壮观!奇迹般有效。太感谢了。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2023-03-18
    • 2015-01-13
    • 1970-01-01
    相关资源
    最近更新 更多