Перенаправить поддомен в подкаталог — завершающая косая черта

#apache #.htaccess #subdomain

#apache #.htaccess #поддомен

Вопрос:

Я хочу перенаправить [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 .

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

Приветствия,
собачка

Комментарии:

1. попробуйте прокомментировать свою базу перезаписи

2. Пунит, спасибо за предложение. Это все равно, если я закомментировал базу перезаписи.

3. Чего я не упомянул выше (я должен был иметь в исходном сообщении), так это то, что URL стал: calendar.apps.example.com/calendar/showcalendar с тем же 404: запрошенный URL /calendar/calendar/showcalendar/ не был найден на этом сервере.

Ответ №1:

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

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