簡體   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