将子域重定向到子目录 - 尾部斜杠
问题描述:
我想将[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 /没有找到。
请,如果你知道上述代码有什么问题或有更好的解决方案,请告诉我。
干杯,
小狗
答
尝试添加结尾的斜杠以下重写规则。
# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*[^/]$ /$0/ [L,R=301]
+0
感谢Punit,修复它! – Doggy
尝试评论您的** rewritebase ** – punit
Punit,感谢您的建议。如果我已经评论了rewritebase,它仍然是一样的。 – Doggy
我在上面没有提到的(我应该在原来的帖子中)是,URL变成: http://calendar.apps.example.com/calendar/showcalendar/ 与404相同: 在此服务器上未找到请求的URL /日历/日历/ showcalendar /。 – Doggy