Переписать специальные субдомены в специальные скрипты и перехватить все субдомены в скрипт - PullRequest
1 голос
/ 05 марта 2012

Мне не удается создать скрипт для моего файла .htaccess.

Мне нужны следующие переписанные файлы:

  • www.domain.tld -> domain.tld (без проблем)
  • admin.domain.tld/(.*) -> domain.tld/?show=admin$1
  • (everyothersubdomain).domain.tld -> domain.tld/?show=everyothersubdomain (для этого я создал субдомен подстановочных знаков)

Кто-нибудь хорош в этом?Я потерпел неудачу после нескольких попыток с ошибкой 500 или просто на индексной странице без каких-либо параметров get (index.php - это всего лишь print_r ($ _ GET)).

Спасибо

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Я сам не проверял, но это должно работать.

RewriteCond  %{QUERY_STRING}  show=(.*)
RewriteRule  ^(index\.php|)$   http://%1.domain.tld  [R=301,L]
RewriteRule ^(admin|special1|special2)\.php    http://$1.domain.tld [R=301,L]
RewriteCond %{HTTP_HOST} ^(admin|special1|special2)\.domain\.tld$  [NC]
RewriteRule (.*) http://domain.tld/%1.php [L,NC,QSA]

RewriteCond %{HTTP_HOST}  www\.domain\.tld  [NC]
RewriteRule (.*)  http://domain.tld/$1  [L,R=301,QSA]

RewriteCond  %{HTTP_HOST}  ^(.*)\.domain\.tld$
RewriteRule (.*)  http://domain.tld/?show=%1[L,NC,QSA]

Если пользователь введет http://domain.tld/admin.php в своем браузере, он будет перенаправлен на http://admin.domain.tld.но если он введет http://admin.domain.tld, он не будет перенаправлен извне.Дайте мне знать, если вы этого хотите.

0 голосов
/ 06 марта 2012

Благодаря @Death я придумал это решение для себя:

RewriteCond %{HTTP_HOST} ^(admin|special1|special2)\.domain\.tld$  [NC]
RewriteRule (.*) index.php?mode=%1 [L,NC,QSA]

RewriteCond %{HTTP_HOST}  www\.domain\.tld  [NC]
RewriteRule (.*)  http://domain.tld/$1  [L,R=301,QSA]

RewriteCond  %{HTTP_HOST}  ^(.*)\.domain\.tld$
RewriteRule (.*)  index.php?show=%1 [L,NC,QSA]

Я сделал несколько тестовых прогонов с index.php, который просто:

<?php print_r($_GET); ?>

И каждый тестовый прогон прошел отлично!

...