2013-03-20 2 views
0

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

Скажем, мой сайт находится по адресу testdomain.com/site1/

Я хочу, чтобы все поддомены, как xyz.testdomain.com/site1/ или даже xyz.testdomain.com быть перенаправлены на конкретную страницу в http://testdomain.com/site1/index.php/test.php

Браузер затем необходимо загрузить http://testdomain.com/site1/index.php/test.php, но URL-адрес будет по-прежнему являться xyz.testdomain.com.

Целью этого является то, что кто-то может перейти на abc.testdomain.com или xyz.testdomain.com, и оба они будут использовать пользователя testdomain.com/site1/index.php/test.php, а затем test.php, у меня есть код, который будет захватывать URL-адрес, а если url - abc.testdomain.com, он отобразит определенный контент, тогда как если поддомен будет xyz.testdomain.com, он отобразит разное содержимое.

Это что-то, что я могу сделать в htaccess? Если да, то как?

+0

Это дубликат. Я просто знаю это. –

+0

@ColeJohnson есть это: http://stackoverflow.com/questions/5790131/htaccess-subdomain-script-redirection – Dave

ответ

0

Используя mod_rewrite, вы можете взломать это вместе.

# Step 1: If the user went to example.com or www.example.com 
# then we don't want to redirect them. (S=1 says skip the next rule) 
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com 
RewriteRule^- [S=1] 

# Step 2: Anything else is redirected to our catcher script. 

# Option 1: keeps the path they went to, but discards the domain 
# i.e. xyz.example.com/abc/def.txt => /var/www/cgi-bin/abc/def.txt 
RewriteRule ^/?(.*) /var/www/cgi-bin/$1 [QSA,L] 

# Or Option 2: take all requests to the same file 
# i.e. xyz.example.com/abc/def.txt => /var/www/cgi-bin/myfile.php 
RewriteRule^/var/www/cgi-bin/myfile.php [QSA,L] 

QSA рассказывает переслать строку запроса, L указывает ему перестать искать более переадресовывает (не обязательно, но иногда помогает, если у вас есть много такого рода, что происходит).

Вы также можете передавать переменные в свой сценарий в качестве параметров запроса, а флаг QSA гарантирует, что они не заменят исходные значения;

# xyz.example.com/abc/def.txt => /var/www/cgi-bin/myfile.php?host=xyz.example.com&path=/abc/def.txt 
RewriteRule ^/?(.*) /var/www/cgi-bin/myfile.php?host=%{HTTP_HOST}&path=/$1 [QSA,L] 

Это означает, что вам не нужно беспокоиться о выяснить, где запрос пришел из внутри вашего скрипта (который может быть фактически невозможно, я не уверен). Вместо этого вы можете просто прочитать его как обычный параметр (он также взломан как обычный параметр, обязательно его дезинфицируйте).

Смежные вопросы