mod_rewrite с поддоменом и шаблоном URL - PullRequest
3 голосов
/ 09 февраля 2010

Я хочу использовать поддомен в качестве переменной get с mod_rewrite И использовать некоторый параметр:

например /page/language/site/counter -> index.php?o=operator&lg=language&s=arg1&c=arg2

Как это сделать с помощью mod_rewrite?

RewriteEngine On  

RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST} ^([a-zA-Z]{3,6})\.example\.com  
RewriteRule ^index/([a-z]{2})/([0-9]{1,2})/([0-9]{1,2})$  http://www.example.com/index.php?o=%1&lg=%2&site=%3&counter=%4 [NC,L] # for index.php
RewriteRule ^export/([a-z]{2})/([0-9]{1,2})/([0-9]{1,2})$  http://www.example.com/export.php?o=%1&lg=%2&site=%3&counter=%4 [NC,L] # for export.php

Есть идеи?

Заранее спасибо

1 Ответ

0 голосов
/ 17 июля 2010

A RewriteCond относится только к непосредственно следующим RewriteRule. Таким образом, в вашем случае обе директивы RewriteCond относятся только к первой директиве RewriteRule, а вторая RewriteRule не имеет связанных директив RewriteCond.

Вы можете исправить это в своем примере, объединив два RewriteRule s:

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([a-zA-Z]{3,6})\.example\.com$
RewriteRule ^(index|export)/([a-z]{2})/([0-9]{1,2})/([0-9]{1,2})$ http://www.example.com/$1.php?o=%1&lg=$2&site=$3&counter=$4 [NC,L]

Также обратите внимание на использование $n вместо %n, поскольку $n относится к совпадению n-й группы RewriteRule, тогда как %n относится к совпадению n-й группы последний успешный RewriteCond.

...