Почему перезапись поддоменов не работает? - PullRequest
0 голосов
/ 13 октября 2009

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

Когда я перехожу на fish.example.com, браузер отображает ошибку 404 со следующим сообщением. «Запрошенный URL / не найден на этом сервере.»

Ты знаешь почему? Как я могу заставить это работать?

    # Internally rewrite <subdomain>.example.com/<URLpath> to example.com/subs/<subdomain/<URLpath>
RewriteEngine on

RewriteCond $1 !^fish/
RewriteCond %{HTTP_HOST} !^www\.example\.com
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com
RewriteRule (.*) /fish/%1/$1 [L]

UPDATE

Я изменил скрипт на следующий, но в этом случае браузер перенаправляет на example.com вместо example.com/fish Ты знаешь почему?

RewriteCond $1 !^fish/
RewriteCond %{HTTP_HOST} !^www\.example\.com
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com
RewriteRule ^fish/(.*) /fish/%1/$1 [L]

Ответы [ 2 ]

0 голосов
/ 13 октября 2009

Обновление:

Понятно ... попробуйте это:

RewriteCond $1 !^fish/
RewriteCond %{HTTP_HOST} !^www\.example\.com
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com
RewriteRule (.*) http://example.com/%1/$1 [R=301,L]

Как правило, перенаправление 301 ...% 1 соответствует поддомену в предыдущем RewriteCond, а $ 1 соответствует исходному URL

0 голосов
/ 13 октября 2009

Попробуйте это:

RewriteEngine On

Перезаписать базу / # Убедитесь, что она начинается с домена

RewriteCond% {HTTP_HOST} ^ fish.example.com [NC] # Поймать свой поддомен

RewriteRule (. *) $ Fish / $ 1 [L] # Перенаправить в папку.

...