.htaccess поддомен Правило перезаписи не работает - PullRequest
0 голосов
/ 06 мая 2018

Я создаю веб-сайт и хочу сделать URL красивее.

URL-адрес будет, например:

https://ccc-bb.example.com => https://example.com/project/show/ccc/bb

Это мой .htaccess файл:

<IfModule mod_rewrite.c>
RewriteEngine On
# prevents files starting with dot to be viewed by browser
RewriteRule /\.|^\.(?!well-known/) - [F]

# front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\-(.*)$ https://example.com/project/show/$1/$2 [L]

Когда я использую выше (https://ccc-bb.example.com), он отправляет меня в пустую папку поддоменов. В папке есть только файл .htaccess.

empty subdomain folder

Что мне не хватает? Я никогда не редактировал файл .htaccess, и Google не помог мне (или я не знаю, что мне нужно искать).

1 Ответ

0 голосов
/ 12 мая 2018

Ваше первое правило для точечных файлов в порядке, но было бы лучше с другой стороны, поскольку вторая часть может соответствовать только началу, а первая - только в подкаталогах.

RewriteRule ^\.(?!well-known/)|/\. - [F]

Проблема вашего другого правила в том, что вы ожидаете, что оно будет соответствовать поддомену. RewriteRule не работают со всей строкой, которую вы видите в адресной строке вашего браузера, только с частью пути, а в .htaccess они видят еще меньше, так как ведущий каталог также удаляется. Чтобы получить доступ к нужной информации, используйте RewriteCond:

RewriteCond %{HTTP_HOST} ^([^-]++)-([^-.]++)\.example\.com$
RewriteRule ^(?!project/show/).* project/show/%1/%2/$0 [L,DPI]

(Вам не нужно включать \.example\.com$, если ваш основной домен не содержит дефисов.)

...