Apache2 - Использование поддоменов нижнего регистра для обслуживания папки верхнего регистра - PullRequest
0 голосов
/ 04 октября 2018

В настоящее время размещаемый веб-сайт использует следующую структуру test.mysite.com/ enjsite}, который затем служит / var / www / test / {site}

Я пытался создать виртуальный хосткоторый может соответствовать нескольким поддоменам и обслуживать папки в / var / www / test /.URL-адреса будут выглядеть как {site} .test.mysite.com

Я пробовал несколько подходов, один с использованием виртуального корня документа:

<VirtualHost *:80>
    ServerName test.mysite.com
    ServerAlias *.test.mysite.com

    VirtualDocumentRoot /var/www/test/%1/
</VirtualHost>

Это работает хорошо, за исключением того, что папки в/ var / www / test / в верхнем регистре, и я не могу получить% 1 в верхний регистр.

Другой подход заключался в использовании перезаписи мода, как указано на сайте apache

<VirtualHost *:80>
    ServerName test.mysite.com
    ServerAlias *.test.mysite.com

    RewriteEngine on
    RewriteMap upper int:toupper
    RewriteMap lowercase int:tolower

    RewriteCond ${lowercase:%{SERVER_NAME}} ^[a-z0-9-]+\.test\.mysite\.com$           
    RewriteRule ^([a-z0-9]+)\.test\.mysite\.com/$ /var/www/test/${upper:$1}/ 
</VirtualHost>

Однако, похоже, что он никогда не переписывает, а просто продолжает обслуживать корневой документ apache по умолчанию.

Я бы предпочел не менять имя всех папок на строчные из-за других зависимостей.Есть ли другие варианты для этого?

1 Ответ

0 голосов
/ 04 октября 2018

Ваше правило неверно: RewriteRule здесь применяется только к полному пути URL, который не включает хост.Попробуйте:

RewriteCond %{HTTP_HOST} ^([a-z0-9-]+)\.test\.mysite\.com$           
RewriteRule .* /var/www/test/${upper:%1}$0 [L]
...