Могу ли я перенаправить субдомен на определенную веб-страницу и обработать значение субдомена с помощью PHP - PullRequest
0 голосов
/ 25 января 2011

Я знаком с изменениями файлов htaccess, но не уверен, что возможно следующее:

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

Например:

Когда кто-то заходит на сайт www.site.com, он показывает родительский сайт, включая информацию о том, как стать участником. Когда человек становится участником, его «уникальный» URl:

www.site.com? MemberID = 12345

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

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

www.12345.site.com

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

www.site.com / index.php (и index.php читает 12345 как функцию $ _GET для правильного поиска iD, правильного и повторного ответа на основе этого.

Я понимаю, что смогу добиться того же, используя информацию после хэша:

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

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

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

первоначальные мысли:

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^subdomain.example.com$ [NC]
RewriteRule (.*) http://subdomain.example.com/$1 [R=301,L]

но, похоже, не работает. Примечание: мой файл htaccess также в настоящее время удаляет файл exnteions для всех страниц (например, www.site.com/contact.php отображается как www.site.com/contact)

Любая помощь приветствуется.

Обновление относительно первого предложения -

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

ErrorDocument 404 /404.php Опции + FollowSymlinks ПереписатьEngine на RewriteCond% {REQUEST_FILENAME}! -D RewriteCond% {REQUEST_FILENAME} .php -f RewriteRule ^ (. *) $ $ 1.php RewriteCond% {HTTP_HOST} ^ (\ w +). Site.com $ [NC] RewriteRule (. *) /Subdomain.php?id=%1 [L]

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

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

Если я просто захожу на www.site.com, выдается ошибка 503:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, EMAIL and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Apache Server at www.contendertest.com Port 80

Журнал ошибок Apache:

[Чт 27 января 12:43:37 2011] [ошибка] [клиент 1.2.3.4] Запрос превысил 10 внутренних перенаправлений из-за вероятной ошибки конфигурации. Используйте LimitInternalRecursion, чтобы увеличить лимит, если это необходимо. Используйте 'LogLevel debug', чтобы получить обратную трассировку.

Попытка 2

Мой файл .htaccess теперь разделен на:

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

Тем не менее, это все еще указывает на случайную целевую страницу моего медиа-храма.

1 Ответ

1 голос
/ 25 января 2011

Вы ищете " RewriteCond backrerececes ". Они принимают форму %1 вместо обычной $1 для текущего RewriteRule.

Итак, ваш пример может выглядеть так:

RewriteCond %{HTTP_HOST} ^(\w+).example.com$ [NC]
RewriteRule (.*) /subdomain.php?id=%1 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...