我有以下.htaccess檔案:
RewriteEngine On
RewriteCond ${ipmap:%{REMOTE_ADDR}} ^allow$ [NC]
RewriteRule ^ - [F,L]
我想知道是否可以將 IP 從串列重定向到另一個檔案夾,但他們仍然看到相同的 URL ( example.com) 而不是example.com/folder。
uj5u.com熱心網友回復:
你可以這樣做:
RewriteEngine On
# Rewrite requests to "/folder" for specific IPs
RewriteCond ${ipmap:%{REMOTE_ADDR}} ^allow$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !^folder/ folder%{REQUEST_URI} [L]
您不需要NC與重寫映射匹配的規則。(假設您的地圖一直在使用allow,而不是任何其他混合大小寫版本?)
如果要重寫所有內容/folder并且您沒有參考外部的任何靜態資源,/folder那么您也許可以洗掉執行檔案系統檢查的兩個條件(以測驗請求是否尚未映射到檔案或目錄)。
作為額外的獎勵,您可以在上述重寫之前(立即在指令之后)阻止用戶直接訪問/folder并重定向回根目錄:RewriteEngine
# Redirect direct requests to "/folder" back to root
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^folder(?:$|/(.*)) /$1 [R=301,L]
(注意:這確實假設您在包含 mod_rewrite 指令的子目錄中沒有另一個.htaccess檔案/folder。如果有,那么您需要在該 .htaccess檔案中執行此重定向。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/446693.html
