使用Htaccess进行301之前的多次重写规则

时间:2015-12-15 18:08:53

标签: php apache .htaccess mod-rewrite redirect

下午好,

一年前,我将我的域名迁移到了我购买的域名。为了处理迁移期间更改的近5000个链接的自定义301,我保持旧域名处于活动状态。虽然95%的网址被正确重定向,但我发现我在htaccess中的重写规则并没有抓住所有内容。我没有运气就研究过多种不同的变种,我希望有人可以提供帮助。

**请记住,我的重写规则是为了格式化旧链接,然后最终将它们重定向到新域上的正确URL。

我目前的重写规则是:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTPS} on [OR]
RewriteCond %{HTTPS} off [NC]
RewriteRule ^(.*)/$ $1 [R=301,L]
RewriteRule ^(.*)RK= /$1 [L,NC,R=301]
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)$ http://newdomain.com/? [R=301,L]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.*)$ http://newdomain.com/ [L,R=301]

同样,我当然不是htaccess / Apache专家,我在过去一年中通过大量的反复试验编制了此列表。重写规则的目标是:

将任何https重写为http:

RewriteCond %{HTTPS} on [OR]
RewriteCond %{HTTPS} off [NC]

如果存在,则删除尾部斜杠:

RewriteRule ^(.*)/$ $1 [R=301,L]

删除与将自己附加到某些网址末尾的黑客攻击相关的代码,看起来像/ RK = 0 / RS = ****:

RewriteRule ^(.*)RK= /$1 [L,NC,R=301]

删除URL中对index.php的任何引用:

RewriteCond %{THE_REQUEST} ^.*/index.php

一旦应用了这些重写规则,则会根据我的301链接映射重定向链接。截至今天,除了https到http重定向之外,这些重写规则非常有效。无论出于何种原因,我无法应用该规则,因此任何带有https的入站链接都会停止在"您的连接不是私有的"屏幕,不重定向。有关如何使https到http规则正常工作的任何建议?

1 个答案:

答案 0 :(得分:0)

更改:

# Do nothing !
RewriteCond %{HTTPS} on [OR]
RewriteCond %{HTTPS} off [NC]

致:

RewriteCond %{HTTPS} on
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]