Я знаком с изменением .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
расширение через внутреннюю перезапись. Как правило, перенаправление всегда должно выполняться до перезаписи.