經過幾個小時的研究,我放棄了!
當我輸入這個:(https://scan.example.com注意HTTPS)它作業正常。
但是當我在瀏覽器中輸入這個時:http://scan.example.com
它轉到:(https://example.com/scan它將子域放在最后)
我如何防止這種情況并確保它發生https://scan.example.com?
這是我目前的.htaccess(除了上述問題之外,這對我來說非常適合我):
Options -MultiViews
RewriteEngine On
# HTTP to HTTPS canonical redirect
RewriteCond %{HTTP_HOST} example\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule (.*) https://example.com/$1 [R=301,L]
# Abort early if the request already maps to (or looks like) a file or directory
RewriteCond %{REQUEST_URI} \.\w{2,4}$ [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# 3. Extensionless URLs for other requests
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.*) $1.php [L]
*PS:我擁有的原因example.com/$1是因為我希望能夠account.php像這樣在 root 中訪問:
https://example.com/account.
uj5u.com熱心網友回復:
我假設您的.htaccess檔案位于example.com主機的根目錄中,其中/scan是一個子目錄(子域可能指向)?這個.htaccess檔案應該同時適用于域頂點和子域?
在這種情況下,您需要使用REQUEST_URI服務器變數而不是替換字串中的$1反向參考。因為當您請求子域時,反向參考將包含子目錄。$1/scan
請嘗試以下操作:
# HTTP to HTTPS canonical redirect
RewriteCond %{HTTP_HOST} example\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(?:www\.)?(. ?)\.?$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
請注意為什么您有第一個條件,除非您托管多個域?
以上將洗掉www子域,但將保留任何其他子域,包括scan. 但是,這并沒有專門將 www 規范化為非 www,因為它只重定向 HTTP。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/441230.html
