簡體   English   中英

.htaccess永久重定向比較

[英].htaccess Permanent Redirect Comparison

這兩個.htaccess片段的行為是否相同,或者在某些用例中一個相對於另一個有好處嗎?

目標是將網站的域名從www.oldexample.comwww.newexample.com 它應說明來自www.oldexample.com的子目錄和頁面,這些子目錄和頁面將繼續存在於www.newexample.com下的同一路徑下。

片段1

RewriteEngine on
RewriteCond %{HTTP_HOST} ^oldexample.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.oldexample.com [NC]
RewriteRule ^(.*)$ https://www.newexample.com/$1 [L,R=301,NC]

片段2

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*) https://www.newexample.com%{REQUEST_URI} [L,R=301,NC]

例如,當包含以下兩個代碼片段之一的.htaccess文件放置在www.oldexample.com的根目錄中時,有人請求:

www.oldexample.com/subdirectory/hello-world.php

它們應該重定向到:

www.newexample.com/subdirectory/hello-world.php

提前致謝!

兩者都會起作用。 唯一的顯着區別是在第一個中檢查HTTP_HOST。 如果其他主機由包含.htaccess文件的同一文件夾提供服務,則這將是必要的。 否則,它們不是必需的。 Options +FollowSymlinks是必需的,但無論如何可能已經在主配置級別設置了,沒有它,重寫將無法進行。

我建議您使用:

RewriteEngine On
RewriteRule ^ https://www.newexample.com%{REQUEST_URI} [L,R=301]

基本上是選項二,但會進行清理以除去不必要的內容(當在比賽中未指定大小寫時,未使用的捕獲和不區分大小寫的內容)。

但是,實現相同目標的更簡單方法是:

Redirect 301 / https://www.newexample.com/

如果需要檢查主機,請使用:

RewriteEngine On
RewriteCond %{HTTP_HOST} (?:^|\.)oldexample.com$
RewriteRule ^ https://www.newexample.com%{REQUEST_URI} [L,R=301]

這將匹配oldexample.comanything.oldexample.com 讓我知道這是否不符合您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM