将子域重定向到子目录 - 尾部斜杠

问题描述:

我想将[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

尝试添加结尾的斜杠以下重写规则。

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

感谢Punit,修复它! – Doggy