2011-10-03 128 views
0

我想將[abc] .apps.example.com重定向到以下apps.example.com/ [abc],但仍顯示使用[abc] .apps.example.com在網址中。將子域重定向到子目錄 - 尾部斜槓

[abc] an be anything eg。

calendar.apps.example.com books.apps.example.com 等

帶着幾分四處和調整的,我有以下的設置,但結束斜線丟失時不工作:

RewriteEngine On 
RewriteBase/

# Fix missing trailing slashes. 
RewriteCond %{HTTP_HOST} !^www\.apps\.example\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.apps\.example\.com$ [NC] 
RewriteCond %{DOCUMENT_ROOT}/%2%{REQUEST_URI}/ -d 
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L] 

# Rewrite sub domains. 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{HTTP_HOST} !^www\.apps\.example\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.apps\.example\.com$ [NC] 
RewriteRule ^.*$ /%2/$0 [QSA,L] 

當輸入以下內容:
calendar.apps.example.com/showcalendar/
它正確地重定向到:apps.example.com/calendar/showcalendar/

但是,當一個尾隨斜線缺少
calendar.apps.example.com/showcalendar

,因爲我得到一個404錯誤說/日曆/日曆/ showcalendar /沒有找到。

請,如果你知道上述代碼有什麼問題或有更好的解決方案,請告訴我。

乾杯,
小狗

+1

嘗試評論您的** rewritebase ** – punit

+0

Punit,感謝您的建議。如果我已經評論了rewritebase,它仍然是一樣的。 – Doggy

+0

我在上面沒有提到的(我應該在原來的帖子中)是,URL變成: http://calendar.apps.example.com/calendar/showcalendar/ 與404相同: 在此服務器上未找到請求的URL /日曆/日曆/ showcalendar /。 – Doggy

回答

1

嘗試添加結尾的斜槓以下重寫規則。

# add trailing slash 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^.*[^/]$ /$0/ [L,R=301] 
+0

感謝Punit,修復它! – Doggy