【发布时间】:2015-12-15 18:08:52
【问题描述】:
下午好,
一年前,我将我的域名迁移到了我购买的域名。我保持旧域处于活动状态,以便为迁移期间更改的近 5000 个链接处理自定义 301。虽然 95% 的 URL 被正确重定向,但我发现我在 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]
要删除与将自身附加到某些 URL 的末尾并看起来像 /RK=0/RS=**** 的黑客尝试相关的代码:
RewriteRule ^(.*)RK= /$1 [L,NC,R=301]
要删除 URL 中对 index.php 的任何引用:
RewriteCond %{THE_REQUEST} ^.*/index.php
一旦应用了这些重写规则,链接就会根据我的 301 链接映射重定向。截至今天,这些重写规则非常有效,除了 https 到 http 重定向。无论出于何种原因,我都无法应用该规则,因此任何带有 https 的入站链接都会在“您的连接不是私有的”屏幕上停止并且不会重定向。有关如何使 https 到 http 规则正常工作的任何建议?
【问题讨论】:
标签: php apache .htaccess mod-rewrite redirect