下午好,
一年前,我将我的域名迁移到了我购买的域名。为了处理迁移期间更改的近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规则正常工作的任何建议?
答案 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]