Домен подстановки и ссылки на страницы в корне сайта - PullRequest
0 голосов
/ 23 августа 2011

У меня есть субдомен подстановочных знаков (ServerAlias ​​* .mydomain.com), чтобы перехватывать все запросы субдоменов и перенаправлять их на домашнюю страницу, сохраняя «поддельный» URL в браузере и передавая субдомен (название города) в качестве параметра URL

.htaccess в папке поддоменов:

<IfModule mod_rewrite.c>
 Options +FollowSymLinks
 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)$ [NC]
 RewriteRule ^(.*)$ http://%2.%3/index.php?city=%1 [P,L]
</IfModule>

Проблема: на каждой странице есть меню с некоторыми ссылками (register.php, login.php, contact.php) и еслиВы выбираете любой из них, находясь в одном поддомене, запрос (например, city.mydomain.com/login.php) перехватывается условием / правилом

Полагаю, мне нужно добавить второй набор условий(s) / rule, но после некоторых тестов не могу найти правильный.Я добавил это до того, как оно уже заработало:

 RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)$ [NC]
 RewriteCond %{REQUEST_URI} ^/(.*)\.php$ [NC]
 RewriteRule ^(.*)$ http://%2.%3/%4 [P,L]

, получив сообщение об ошибке:

Bad Gateway!Прокси-сервер получил неверный ответ от вышестоящего сервера.Прокси-сервер не смог обработать запрос GET /register.php.

Причина: ошибка поиска DNS для:

Если вы считаете, что это ошибка сервера, обратитесь к веб-мастеру.

Ошибка 502 city.domaim.com

CentOS 5 Parallels Small Business Panel 10.2.0

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

Ответы [ 2 ]

0 голосов
/ 23 августа 2011

Ошибка была наивной, я упустил из виду, что обратные ссылки в строке подстановки на шаблон RewriteCond (% N), относятся к последнему совпадению . Тогда, в моем первоначальном правиле,% 2,% 3 и% 4 не имели никакого смысла

Вот рабочий .htaccess:

<IfModule mod_rewrite.c>
 Options +FollowSymLinks
 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)$ [NC]
 RewriteCond %{REQUEST_URI} ^/(.*)\.php$ [NC]
 RewriteRule ^(.*)$ http://mydomain.com/%1.php [P]
 RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)$ [NC]
 RewriteRule ^(.*)$ http://%2.%3/index.php?city=%1 [P]
</IfModule>

Кроме того, флаг [P] подразумевает [L]

Урок: RTFM! : -)

0 голосов
/ 23 августа 2011

Вы можете слишком усложнить это, используя mod_rewrite. Я бы предложил просто проанализировать / проверить поддомен (город) и установить константу с прямым PHP. Например, в файле конфигурации / инициализации. В конце концов, вы получите гораздо больший контроль над поддоменом, особенно в случае проверки.

ПОЦЕЛУЙ :)

...