подстраницы в поддомене - PullRequest
       22

подстраницы в поддомене

0 голосов
/ 11 апреля 2011

Хорошо, цель состоит в том, чтобы иметь неограниченное количество поддоменов, динамически создаваемых для наших участников. Таким образом, запрос к www.example.com/sub_index.php?user=demo будет преобразован в URL-адрес demo.example.com, а www.example.com обслуживается index.php.

Я разрешил серверу имен и веб-серверу принимать запросы с подстановочными знаками (на самом деле я связываюсь с моим хост-сервером).

В части htaccess у меня есть следующее:

####rewrite example.com into www.example.com
RewriteCond %{HTTP_HOST} ^example.com 
RewriteRule (.*) http://www.example.com/$1 [R=301,L] 
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*index\.htm([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^(([^/]+/)*)index\.htm$ http://www.example.com/$1 [R=301,L] 

####subdomains 
RewriteCond %{HTTP_HOST} !^www\.example.com 
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9]+)\.example.com 
RewriteRule ^(.*)$ sub_index.php?user=%1 

Итак, запрос к demo.example.com/ и demo.example.com/index.php обслуживается www.example.com/sub_index.php?user=demo

Моя проблема в том, что я не могу найти способ заставить подстраницы работать в поддомене. Например: demo.example.com/somepage.php должен обслуживаться www.example.com/sub_page.php?user=demo в то время как demo.example.com/otherpage.php?id=5 должен обслуживаться www.example.com/sub_page2.php?user=demo&id=5.

Спасибо за любой совет / совет

1 Ответ

0 голосов
/ 11 апреля 2011

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

В вашем примере невозможно использовать простую текстовую заменуперейти от somepage.php к sub_page.php, а затем otherpage.php к sub_page2.php - вам понадобится новое правило для каждой страницы, потому что только вы знаете о сопоставлении.Намного проще основывать URL-адрес результата на данных в исходном URL-адресе.

Например, вы можете разработать схему, в которой:

demo.example.com/somepage.php?start=5

преобразуется в

www.example.com/sub_somepage.php?user=demo&start=5

При этой схеме имя целевого сценария может быть получено из имени исходного сценария.RewriteRule для этой схемы будет выглядеть так:

RewriteRule ^/([A-Za-z0-9_]+\.php) /sub_$1?user=%1 [qsappend]

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

RewriteLog "/tmp/httpd-rewrite.log"
RewriteLogLevel 5

Затем вы можете проверить, что ваши правила делают то, что вы хотите.Дополнительную информацию о том, как работают эти директивы, можно найти по адресу httpd.apache.org .В частности, если вы хотите перенаправить на другой хост для обслуживания контента, вам нужно будет добавить новое имя хоста в замену и флаг [redirect].

...