Перезапись субдомена CNAME - PullRequest
1 голос
/ 10 февраля 2009

У меня есть поддомен, который я хочу перенаправить в другое место, используя mod_rewrite. Например:

subdomain.example.com -> www.example.com/subdomain

Я не хочу отправлять перенаправление в браузер (поэтому он не знает, что страница отличается).

BTW subdomain.example.com имеет запись CNAME, указывающую на example.com.

Редактировать

Еще один пример, просто чтобы уточнить. Это очень просто: если в браузер введен http://x.abc.com, Apache возвращает содержимое http://www.abc.com/x.

Ответы [ 3 ]

3 голосов
/ 10 февраля 2009

Если оба домена совместно используют один и тот же каталог, вы можете сделать это, чтобы переписать внутренние запросы:

RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$
RewriteRule !^subdomain/ subdomain%{REQUEST_URI}

После того, как вопрос прояснился: у меня этот работает:

RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$
RewriteCond %1.%{THE_REQUEST} ^([^.]+)\.[A-Z]+\ (/[^\ ]*)
RewriteCond %{DOCUMENT_ROOT}$1 !-d
RewriteRule ^([^/]+)? %1%2

Но тебе лучше пойти с тем, что Брэндон сказал.

1 голос
/ 10 февраля 2009

В дополнение к тому, что было сказано выше Gumbo, вы можете использовать оператор Apache VirtualDocumentRoot для динамического сопоставления URL-адреса с динамическим расположением на диске. Это позволяет вам использовать части URL для создания пути на диске. Проверьте эту ссылку для получения дополнительной информации:

http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html

Пример:
URL = <a href="http://sub.example.com/dir/page.html" rel="nofollow noreferrer">http://sub.example.com/dir/page.html</a><br> Server Path = /var/www/site.com/htdocs/sub/dir/page.html<br> VirtualDocumentRoot = /var/www/%-2.0.%-1.0/htdocs/%-3/

0 голосов
/ 10 февраля 2009
RewriteCond %{HTTP_HOST} ^([^.]+)\.abc\.com$
RewriteRule ^(.*)$       http://www.abc.com/%1$1   [R=301]
...