Как я могу использовать mod_rewrite, чтобы изменить, какой файл выбирается на основе поддомен URL? - PullRequest
0 голосов
/ 16 января 2010

Скажем, у меня запрашивается URL:

sub.domain/file.bin

и я хотел получить этот файл:

domain/hosted/sub/file.bin

Как бы я структурировал директивы перезаписи? Я работаю над этим уже несколько дней, и у меня просто болит голова ...

Поддомены многочисленны и часто добавляются и удаляются, поэтому я пытаюсь найти решение, которое подходит для всех них.

Ответы [ 3 ]

1 голос
/ 16 января 2010

Предполагая, что домашний каталог для www.domain.com равен domain/, и что при наличии любого субдомена sub.domain.com вы хотите, чтобы файлы для домашних каталогов этого субдомена находились в domain/hosted/sub/

Попробуйте что-то вроде этого:

RewriteEngine on

// If the host is just mydomain.com, do nothing more
// this is to prevent some recursion problems I've read of...
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteRule ^.*$ - [L]

// Otherwise strip off everything before mydomain
// And add it to the start of the request
RewriteCond %{HTTP_HOST} ^(.*?)\.(www\.)?mydomain\.com$ [NC]
RewriteRule ^.*$ %1%{REQUEST_URI} [QSA]

// Then prefix with 'hosted'
RewriteRule ^(.*)$ hosted/$1 [QSA,L]

Вам также может понадобиться подстановочный знак в вашем DNS или что-то в этом роде ... но я допускаю, что DNS и переписывание модов htaccess - это некоторые из моих слабых мест. Смотри также http://www.webmasterworld.com/forum92/138.htm

1 голос
/ 16 января 2010

Попробуйте это правило:

RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.com$
RewriteCond %1 !=www
RewriteRule !^hosted/ hosted/%1%{REQUEST_URI} [L]
1 голос
/ 16 января 2010

В конфигурации httpd поддомена:

RewriteCond %{HTTP_HOST} ([^\.]+).domain
RewriteRule ^/file.bin$ http://domain/hosted/%1/file.bin
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...