[英].htaccess Permanent Redirect Comparison
這兩個.htaccess片段的行為是否相同,或者在某些用例中一個相對於另一個有好處嗎?
目標是將網站的域名從www.oldexample.com
為www.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.com
和anything.oldexample.com
。 讓我知道這是否不符合您的需求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.