2013-10-08 6 views
-1

У меня есть поддомен подстановки *.domain.com, назначенный public_html /.Поддомен подкаталога mod-rewrite

Я хочу сделать каталог www.domain.com/folder1/index.php?name=rock до rock.domain.com.

Что касается другого, я хочу, чтобы www.domain.com/folder1/folder2/index.php?id=5 к 5.domain.com

Есть ли способ сделать это? Я новичок в mod-rewrite. Очень ценю вашу помощь. Благодаря

Дополнительная информация

мне нужны оба из них. Они будут иметь разные переменные.

Например, /folder1/index.php основан на имени состояния (? State = statename).

Для /folder1/folder2/index.php он будет основан на уникальном имени (? Name = uniquename).

Так, www.domain.com/folder1/index.php?state=statename будет statename.domain.com

и www.domain.com/folder1/folder2/index.php?name=uniquename будет uniquename.domain.com

Спасибо

ответ

0

в файле Htaccess в корневом каталоге, вы можете добавить правила, специфичные для "рок" и "5":

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^rock\.domain\.com$ [NC] 
RewriteRule ^$ /folder1/index.php?name=rock [L,QSA] 

RewriteCond %{HTTP_HOST} ^5\.domain\.com$ [NC] 
RewriteRule ^$ /folder1/folder2/index.php?name=5 [L,QSA] 

Если вы хотите, чтобы перенаправить в другом направлении, то вам нужно:

RewriteEngine On 

RewriteCond %{QUERY_STRING} ^state=(.*)$ 
RewriteRule ^folder1/index\.php$ http://%1.domain.com/? [L,R=301] 

RewriteCond %{QUERY_STRING} ^name=(.*)$ 
RewriteRule ^folder1/folder2/index\.php$ http://%1.domain.com/? [L,R=301] 
+0

Спасибо. Но что, если камень и 5 изменится в зависимости от результата php. Другое слово, оно гибкое, и слово может быть чем угодно. –

+0

@RedzwanLatif как вы должны сказать разницу между тем, что идет в '/ folder1/index.php', и что происходит с'/folder1/folder2/index.php'? –

+0

Я добавил дополнительную информацию в свой вопрос. Спасибо –

0

После общего правила должны работать для вас:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^www\. [NC] 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+folder1/index\.php\?state=([^\s&]+) [NC] 
RewriteRule^http://%1.domain.com/? [R=301,L] 

RewriteCond %{HTTP_HOST} ^www\. [NC] 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+folder1/folder2/index\.php\?name=([^\s&]+) [NC] 
RewriteRule^http://%1.domain.com/? [R=301,L] 
+0

Будет ли такой же код для /folder1/folder2/index.php? –

+0

Вы хотите '/ folder1/folder2/index.php' или'/folder1/index.php'? – anubhava

+0

Мне нужно обоим. Они будут иметь разные переменные. Например, /folder1/index.php основан на имени состояния (? State = statename). Для /folder1/folder2/index.php он будет основан на уникальном имени (? Name = uniquename). Итак, www.domain.com/folder1/index.php?state=statename будет statename.domain.com и www.domain.com/folder1/folder2/index.php?name=uniquename будет uniquename.domain.com. Спасибо –