Назад | Перейти на главную страницу

Перенаправить субдомен в скрытую папку с помощью mod_rewrite

Я хочу хранить свой блог во вложенной папке domain_com/htdocs/blog и получить к нему доступ с помощью blog.domain.com. Я могу получить его с помощью apache mod_rewrite:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^blog\.domain\.com
RewriteCond %{HTTP_HOST} !^/blog
RewriteRule ^(.*)$ /blog/$1 [L]

Но я также хочу перенаправить hxxp: //domain.com/blog на hxxp: //blog.domain.com (просто потому, что я хочу скрыть его от пользователей). Простое перенаправление вроде:

RewriteCond %{HTTP_HOST} ^wojtyniak\.com$
RewriteRule %{REQUEST_URI} ^/foo
RewriteRule ^(.*)$      http://foo.wojtyniak.com  [L,R=301]

вызывает петлю перенаправления. Есть ли способ сделать такое перенаправление без цикла? Большое спасибо!

PS. Извините за эти hxxp, но serverfault считает, что это ссылка, и не позволяет мне публиковать больше одной.

Да, я знаю. Спустя 2 года это здесь больше никому не понадобится. Но может быть тот, кого сюда перенаправляет гугл.

# Rewrite <subdomain>.example.com/<path> to example.com/<subdomain>/<path>
#
# Skip rewrite if no hostname or if subdomain is www
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
# Extract (required) subdomain (%1), and first path element (%3), discard port number if present (%2)
RewriteCond %{HTTP_HOST}<>%{REQUEST_URI} ^([^.]+)\.example\.com(:80)?<>/([^/]*) [NC]
# Rewrite only when subdomain not equal to first path element (prevents mod_rewrite recursion)
RewriteCond %1<>%3 !^(.*)<>\1$ [NC]
# Rewrite to /subdomain/path
RewriteRule ^(.*) /%1/$1 [L]
#

Я нашел это здесь http://www.webmasterworld.com/forum92/1310.htm

Самым идеальным решением было бы разместить это на виртуальном хосте с файлами блога, размещенными где-то за пределами вашего каталога htdocs.

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