第一部分重定向example.com/site/var
至site.example.com/var
。 二重寫規則,重寫您的網址site.example.com,
RewriteEngine on
RewriteBase/
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^(www\.)?example.com/site/(.*)
RewriteRule (.*) http://site.example.com/%1 [R=301,L]
RewriteRule ^([^/\.]+)$ /site/?var=$1 [L]
說明:
RewriteEngine敘述上
此行啓用重寫引擎。否則可能無法工作。
RewriteBase/
這行設置了重寫基地。這個指令在想要爲每個目錄重寫設置基本URL時使用。默認值是當前的物理路徑,但在大多數情況下,基於URL的路徑與物理文件名路徑沒有直接關係,所以使用默認值是錯誤的。例如當使用虛擬目錄時,你應該正確地設置這個選項,以使mod_rewrite運行良好。 ?
的RewriteCond%{HTTP_HOST}%{REQUEST_URI} ^(WWW)example.com/site/(.*)在此行中第一阿帕奇
加入到變量(主機地址:www.example.com
和請求URI :/site/var
)。然後用我給出的模式檢查結果。首先結果可以是www.
。之後應該是example.com/site/
並在最後它可以是任何東西。
RewriteRule (.*) http://site.example.com/%1 [R=301,L]
這一行重定向用戶請求http://site.example.com/%1
與301的狀態代碼。因爲它有L
標誌這是apache檢查的最後一條重寫規則。 %1
是重寫條件中標記爲(.*)
的所有內容。
RewriteRule ^([^/\.]+)$ /site/?var=$1 [L]
這條線是你把你的問題行:它重寫不具有/
與/site/?var=$1
點的每個URL。
你把.htacess文件放在哪裏?在網站目錄? – undone
是的,我已經把它放到mydomain.com/html/site那是網站目錄 – Simone
我很困惑!你確定你的重寫規則適用於example.com/site?因爲它在我看來應該適用於site.example.com! – undone