Как перенаправить динамический поддомен также на основе строки запроса? - PullRequest
2 голосов
/ 20 сентября 2011

У меня есть свой сайт, который перенаправляет все * .domain.com звонки на domain.com. Я хочу, чтобы, когда пользователь вводит динамическое имя субдомена, он должен быть перенаправлен на свою домашнюю страницу, например: если пользователь пишет division1.domain.com, то сайт должен указывать на страницу division.php?value=division1, а когда пользователь получает доступ к division1.domain.com/news/newsdetails.php, это должно вызывать страницу news.php с аргументом value=division1. Аналогичным образом, если я вызываю страницу новостей из базового URL-адреса, например, domain.com/news/newsdetails.php, то это не должно включать никаких аргументов.

Вот текущий код htaccess

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com/(news/newsdetails.\.php)$  [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^([^/.]*)(.*)$ news.php?div=%1$1&filter=$2 [NC,QSA,L]

# For www.domain.com it should go to the index page
RewriteCond %{HTTP_HOST} ^(www\.)?domain.com$ [NC]
RewriteRule ^(.*)$ index.php [NC,L]

# For Accessing Divisions Page

RewriteCond %{HTTP_HOST} !^www\.domain\.com$
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$
RewriteRule ^$ divisions.php?username=%1 [R,L]

1 Ответ

2 голосов
/ 21 сентября 2011

Добавьте:

# redirect ******XX.domain.com 
# to       domain.com/*******.php?value=******XX
# where XX is a number...
  RewriteCond %{REQUEST_URI} !news/newsdetails\.php$           # not news page
  RewriteCond %{HTTP_HOST}!^www\.domain\.com                   # prevent rewrite www
  RewriteCond %{HTTP_HOST} ^(([^.]+)[0-9]+)\.domain\.com$      # catch subdomain
  RewriteRule .* http://domain\.com/%2.php?value=%1 [R=301, L] # Redirect

# redirect ******.domain.com/news/newsdetails.php
# to       domain.com/news.php?value=******
  RewriteCond %{REQUEST_URI} news/newsdetails\.php$ # news page
  RewriteCond %{HTTP_HOST}!^www\.domain\.com        # prevent rewrite www
  RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com$   # catch subdomain
  RewriteRule .* http://domain\.com/news.php?value=%1 [R=301, L] # Redirect

# redirect domain.com/news/newsdetails.php
# to domain.com/news.php
  RewriteCond %{REQUEST_URI} news/newsdetails\.php$ # news page
  RewriteRule .* /news.php?value=%1 [L]             # Redirect

в файл htaccess.

...