Как использовать правило перезаписи, чтобы заставить "domain.tld / subdir / file.html" отображаться как "subdir.domain.tld / file.html"? - PullRequest
0 голосов
/ 31 декабря 2010

Первый раз постер.Очень новый для mod_rewrite.Я на общем сервере, и контекст этой проблемы связан с виртуальным каталогом под моей учетной записью root.

Домен (domain.tld) ​​будет иметь подкаталоги, представляющие годовые мини-сайты статических файлов .html.Имена подкаталогов (гггг) будут иметь четырехзначный год (например, «2010»).

Я хочу, чтобы любой вызов на domain.tld/yyyy/file.html отображался как yyyy.domain.tld/file.html в адресной строке браузера, и (конечно же,) для правильной загрузки страницы.

Я уже заставляю сбросить «www», используя…

RewriteCond %{HTTP_HOST} ^www\.domain\.tld [NC]
RewriteRule (.*) http://domain.tld/$1 [R=301,L]

Пока все хорошо.

Но что бы я ни пыталсяпосле этого я не могу заставить поддомен переместиться в начало домена.

Вот один из более сложных примеров, которые я пробовал (без сомнения, неправильно)…

RewriteCond %{HTTP_HOST} ^domain\.tld/([0-9]+)/([a-z-]+)\.html [NC]
RewriteRule (.*) %1.domain.tld/%2.html [NC]

Это ничего не нарушает (что я могу сказать), но и не делает то, что я хочу.Т.е., если я наберу yyyy.domain.tld, я увижу yyyy.domain.tld в адресной строке, а навигация по нему даст мне yyyy.domain.tld/file.html и т. Д. Отлично.Но если также набрать domain.tld/yyyy, я посмотрю domain.tld/yyyy и т. Д., Но я не хочу, чтобы люди это видели.Он не перенаправляет и не маскирует, или псевдоним, или как вы его называете.

Возможно ли вообще заставить один взгляд на другого так?Должен ли я работать с DNS вместо этого?

Заранее спасибо!

1 Ответ

0 голосов
/ 31 декабря 2010

HTTP_HOST содержит только значение HTTP Host .Так что попробуйте:

RewriteCond %{HTTP_HOST} ^domain\.tld$
RewriteRule ^([0-9]+)/([a-z-]+)\.html$ http://$1.domain.tld/$2.html [NC,L,R=301]
...