iT邦幫忙

1

htaccess 怎麼加上判斷?

  • 分享至 

  • xImage
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

這個會使假設沒有輸入 www 則會自動 + www and https
但我現在有兩個網域
一個是en.xxx.com
一個是www.xxx.com < 我的設定是適用在這個的
這樣進入 en.xxx.com 他會自動加上 www 變成 www.en.xxx.com
要如何判斷說假設是 xxx.com 再套用判斷
如果是 en.xxx.com 則只要加上 https 就好

看更多先前的討論...收起先前的討論...
wiseguy iT邦超人 1 級 ‧ 2022-11-01 00:33:04 檢舉
試試在你目前這個條件的前面,先加上同樣的兩條判斷:
若開頭是 en. 就改寫為只加上 https:// 就跳離
RewriteCond %{HTTP_HOST} ^en\. [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
請問這樣對嗎?
RewriteEngine On
RewriteCond %{HTTP_HOST} ^en\. [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


01 指示apache啟動改寫模組

02 RewriteCond %{HTTP_HOST} !^en\.是比對指令。比對指令表示下一行的改寫指令只有當%{HTTP_HOST}
,即瀏覽器指向的域名,是en開頭時,才會作用。[NC]表示忽略大小寫。
^$這兩個符號中的文字,是正規表示式。所以.前面,必須加上逸脫字元。

03 描述了改寫將如何改。其中^(.*)$這個正規表示式,
比對了URL除了域名的後半部分。
[L]表示這是最後一條改寫指令,所以一個http要求做了這次改寫之後,
就會直接做為結果。而R=301是表示,網頁伺服器傳回一個301狀態碼給瀏覽器。

04 RewriteCond %{HTTP_HOST} !^www\.是比對指令。比對指令表示下一行的改寫指令只有當%{HTTP_HOST}
,即瀏覽器指向的域名,不是www開頭時,才會作用。
其中!表示了「不是」的意思。[NC]表示忽略大小寫。
^$這兩個符號中的文字,是正規表示式。所以.前面,必須加上逸脫字元。

05 描述了改寫將如何改。其中^(.*)$這個正規表示式,
比對了URL除了域名的後半部分。
[L]表示這是最後一條改寫指令,所以一個http要求做了這次改寫之後,
就會直接做為結果。而R=301是表示,網頁伺服器傳回一個301狀態碼給瀏覽器。

注意一下順序,以上給予參考。
好的,非常謝謝您
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
不明
【**此則訊息已被站方移除**】

尚未有邦友回答

立即登入回答