繁体   English   中英

带有Htaccess的301之前的多个重写规则

[英]Multiple Rewrite Rules Before 301 With Htaccess

下午好,

一年前,我将域名迁移到了购买的域名。 我将旧域保持活动状态是为了处理在迁移过程中更改的近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 to http规则正常工作的任何建议?

变更:

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

至 :

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM