Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 重定向匹配301以更改URL的一部分_.htaccess_Url_Mod Rewrite_Redirect_Url Redirection - Fatal编程技术网

.htaccess 重定向匹配301以更改URL的一部分

.htaccess 重定向匹配301以更改URL的一部分,.htaccess,url,mod-rewrite,redirect,url-redirection,.htaccess,Url,Mod Rewrite,Redirect,Url Redirection,以前的错误留下了坏链接,我正试图用301重定向匹配来清理我的混乱 正确的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:/

以前的错误留下了坏链接,我正试图用301重定向匹配来清理我的混乱

正确的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
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,如下所示:。那个奇怪的URL至少把双反斜杠改成了单反斜杠…所以我们可能正在取得进展?还有什么建议吗?@anubhava一如既往,对你的Apache规则知识印象深刻。对社区来说,这是一笔惊人的财富@杰克·古尔德:非常感谢你的客气话。@anubhava太棒了!工作起来很有魅力。非常感谢你。非常感谢你的帮助!
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]