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

Использование ModRewrite для правильного направления поддоменов не работает в MediaTemple

Я знаком с изменением .htaccess файлы, но мои первые попытки сделать это по-прежнему терпят неудачу.

В конечном итоге я хочу указать пользователям на «воображаемые» поддомены (те, которые не существуют), чтобы поддомен можно было правильно проанализировать с помощью PHP и MySQL, чтобы найти информацию о конкретном члене. Я предполагаю, что MediaTemple имеет что-то настроен так, чтобы всегда проверять истинный каталог поддомена перед любым доступом, поэтому .htaccess настройки файла никогда не затрагиваются и, в свою очередь, просто генерируют ошибки.

Например:

Когда кто-то идет в www.example.com в настоящее время он показывает родительский сайт, включая информацию о том, как стать участником. Когда человек становится участником, его "уникальный" URL-адрес:

www.example.com?MemberID=12345

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

Я бы хотел добиться следующего:

www.12345.example.com 

перенаправляет на

www.example.com/index.php?MemberID=12345

(index.php читает 12345 как $_GET функция для правильного поиска ID, действительный и ответ, основанный на этом.)

Я верю мы мог? добиться того же, используя информацию после косой черты:

например www.example.com/12345

Проблема в том, что у нас уже есть другие страницы, использующие /xxxx для изменения содержимого клиента, а также я не хочу блокировать чью-либо возможность просто посетить: www.example.com/contact например в виде живой ссылки.

(где сайт перенаправляется на индекс, пытается найти memberid = 'contact' и не находит результатов).

Мой .htaccess в настоящее время:

ErrorDocument 404 /404.php
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com
RewriteRule .* http://example.com/processing_page.php?ID=%1 [L,R]

Исходя из моих потребностей, я ожидал, что www.something.example.com Я буду перенаправлен на: www.example.com/processing_page.php?something

Вместо этого он просто перенаправляется на мою страницу хостинга mediatemple (по сути, указывается, что субдомен с именем «что-то» не существует).

Я запускаю наш сервер на сервере Media Temple DV 3.5 с CentOS5 и стеком LAMP.

Сожалеем о ваших проблемах. Если у вас все еще возникают проблемы, я бы порекомендовал обратиться в нашу техподдержку и ознакомиться с конкретными правилами в нашей вики.

Если вы отправите запрос в службу поддержки, не стесняйтесь обращаться к нам через нашу службу поддержки в Twitter или по телефону.

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com
RewriteRule .* http://example.com/processing_page.php?ID=%1 [L,R]

Я ожидал, исходя из своих потребностей, что при вводе www.something.example.com Я буду перенаправлен на: www.example.com/processing_page.php?something

Этот код на самом деле не сделал бы то, что вам нужно. Первое условие специально исключает любое имя хоста, которое начинается www., поэтому он не перенаправил бы запрос на www.something.example.com. Вы бы попросили something.example.com чтобы у этой директивы был шанс. В противном случае вы просто получите домашнюю страницу по умолчанию.

Предполагается, что у вас есть поддомен с подстановочными знаками, настроенный в DNS, и соответствующий ServerAlias директива, определенная в виртуальном хосте для вашего сайта (и перезапущенном веб-сервере).

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

RewriteCond %{HTTP_HOST} ^www\.([a-z0-9]+)\.example\.com
RewriteRule .* http://example.com/processing_page.php?ID=%1 [L,R]

Это тоже должно было пройти перед первое правило, добавляющее .php расширение через внутреннюю перезапись. Как правило, перенаправление всегда должно выполняться до перезаписи.