динамические субдомены с htaccess: URL не должен меняться в браузере - PullRequest
0 голосов
/ 10 марта 2012

Попытка реализации поддоменов с помощью htaccess.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{HTTP_HOST} !^www.
    RewriteCond %{HTTP_HOST} ^([a-z0-9]+)\.domain.com(.*)$
    RewriteRule ^(.*)$ http://domain.com/index.php?/public_site/main/%1/$1 [L]
</IfModule>

при вводе ahser.domain.com URL-адрес браузера изменяется.есть ли опция htaccess, чтобы не допустить этого при использовании абсолютных URL в RewriteRule?

1 Ответ

0 голосов
/ 10 марта 2012

Не переписывайте на полный URL с доменом в нем. Это создает перенаправление, так как оно идет на другой сайт! Вы могли бы поставить microsoft.com там; так как это будет работать без перенаправления?

Что вам нужно сделать, это убедиться, что веб-страницы работают в исходном домене. Поэтому, когда клиент запрашивает myname.domain.com/..., как насчет переписать это в myname.domain.com/index.php?public_site/main/myname/.... Держите домен таким же. index.php? можно заставить работать в любом из этих доменов. Например, даже это может сработать:

http://OTHER.domain.com/index.php?public_site/main/MYNAME/...

т.е. установите его так, чтобы не важно, какой виртуальный хост обращается к этому пути.

Если у вас есть это, то переписать можно просто:

# will not trigger redirect
RewriteRule ^(.*)$ /index.php?/public_site/main/%1/$1 [L]

Вы должны быть осторожны, чтобы не создавать цикл, поскольку теперь вы перенаправляете URL-адрес на более длинный URL-адрес, который соответствует тому же правилу перезаписи в том же домене. Вам нужно добавить RewriteCond, чтобы не применять эту перезапись, если URL уже начинается с /index.php?public_site/.

...