2009-10-13 4 views
0

Я хочу, чтобы мой поддомен указывал прямо на папку. Я нашел следующий скрипт 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] 
+0

Имеются ли в журналах доступа/ошибок Apache полезную информацию? – MichaelM

+0

Да, Майкл, спасибо за подсказку. Я вижу следующее сообщение [Вт Окт 13 09:21:05 2009] [ошибка] [клиент 188.134.xxx.xxx] Файл не существует:/var/www/fish/fish Похоже, что каталог добавлен 2 раза. Но я понятия не имею, почему. – Pavel

+1

Duplicate: http://stackoverflow.com/questions/1555390/can-i-rewrite-from-subdomain-to-folder-avoiding-redirection – Gumbo

ответ

0

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

RewriteEngine На

Rewrite Base/# Убедитесь, что она начинается с домена

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

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

+0

Спасибо, Брент! К сожалению, это не сработает. Apache говорит, что в строке RewriteBase есть синтаксическая ошибка. RewriteBase/# Убедитесь, что он начинается с домена Да, я пишу его без пробела между Rewrite и Base, но это не помогает. Все еще есть ошибка. – Pavel

0

Update:

Я вижу ... попробовать это:

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

John, я изменил сценарий так, как вы предлагаете, но в этом случае браузер перенаправляет на example.com вместо example.com/fish Посмотрите полный сценарий в своем обновлении к теме. – Pavel

Смежные вопросы