Перенаправить поддомен в подкаталог - косая черта - PullRequest
0 голосов
/ 03 октября 2011

Я хочу перенаправить [abc] .apps.example.com на следующий apps.example.com/[abc], но все еще показываю использование [abc] .apps.example.com в URL.

[abc] может быть что угодно, например.

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 сообщение об ошибке / calendar / calendar / showcalendar / not found.

Пожалуйста, если вы знаете, что не так с приведенным выше кодом или у вас есть лучшее решение, сообщите мне.

Приветствия,
Doggy

1 Ответ

1 голос
/ 04 октября 2011

попробуйте следующее правило перезаписи для добавления конечных слешей.

# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*[^/]$ /$0/ [L,R=301]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...