Я (пытаюсь) настроить apache mod_rewrite для следующего сценария. У меня настроено несколько vhosts на сервере apache, например
- siteA.domain.com
- siteB.domain.com и т. Д.
Каждый vhostимеет DocumentRoot, например:
- / var / www / vhosts / siteA.domain.com
- / var / www / vhosts / siteB.domain.com
Я настроил webaliser для захвата файлов запросов_log для каждого vhost и создания страниц статистики в: * /var/www/usage/siteA.domain.com/index.html (... и других страницах)* /var/www/usage/siteB.domain.com/index.html
Теперь я хочу, чтобы пользователь мог просматривать siteA.domain.com/stats и просматривать страницы статистики webaliser для siteA;siteB.domain.com/stats для просмотра страниц статистики webaliser для siteB и т. д.
Конечно, легко установить псевдоним в каждом виртуальном хосте, например,
- В хосте для сайта A.domain.com Я просто добавляю:
Alias /stats /var/www/usage/siteA.domain.com
- В vhost для siteB.domain.com я просто добавляю:
Alias /stats /var/www/usage/siteB.domain.com
Однако для каждого из перечисленных выше требуется настройкаВХост. Я бы предпочел написать конфигурацию webaliser в файле webaliser.conf и оставить его в нем.
Чтобы решить эту проблему, я пытаюсь написать для этого правила mod_rewrite и записать их вwebaliser.conf, а не в контексте каждого отдельного хоста. По сути, если запрошенный URL-адрес - xxx.domain.com/stats[/page], то обслуживаемой страницей является /var/www/usage/xxx.domain.com[/page]. Предполагается, что это внутреннее перенаправление, поэтому браузеру не нужно знать, что страница не находится именно в этом месте.
То, что я получил до сих пор:
Alias /stats /var/www/usage
#<Location /usage>
DirectoryIndex index.html
LogLevel trace3
Options FollowSymLinks
RewriteEngine on
RewriteRule /var/www/usage(.*) https://%{HTTP_HOST}/usage/%{HTTP_HOST}$1 [L,END]
#</Location>
Но вышесказанное дает мне цикл перенаправления в данный момент. В предыдущей версии выше (которую я, честно говоря, не помню), я продолжаю получать страницы Не найдено.
Я также пытался RewriteRule /var/www/usage(/[^/]*)? /var/www/usage/%{HTTP_HOST}$1 [L]
Но это приводит к Не найдено.
Я также пробовал различные варианты Location /usage
, Directory /var/www/usage
и без контекста, но я не могу заставить его работать.
Другая потенциальная проблема заключается в том, что если index.html
не записано вURL, документ /var/www/usage/xxx.domain.com/ - это файл, который невозможно найти.
Любая помощь приветствуется.