.htaccess将子域和目录重写为变量

时间:2014-07-17 21:19:41

标签: php .htaccess rewrite

试图让这样的东西工作,但只有第一种情况有效。基本上我需要传递三个变量,这些是三种情况:

1

cat.domain.com 应该去: 的index.php?宠物猫=

2

cat.domain.com/orange.html 应该去: ?的index.php宠物猫=&安培;颜色=橙

3

cat.domain.com/orange/fluffy.html 应该去: ?的index.php宠物猫=&安培;颜色=橙&安培;名称=蓬松

我只能与第一个合作:

RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com$ [NC]
RewriteRule ^$ index.php?pet=%2 [L]

但是,当我为#2尝试这个时,它似乎无法正常工作或检测到"颜色"

RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com/([a-zA-Z0-9_-]+).html$ [NC]
RewriteRule ^$ index.php?pet=%2&color=%3 [L]

我怎么写#2和#3?请帮忙!

1 个答案:

答案 0 :(得分:0)

URI数据不属于HTTP主机字段,因此,您无法在%{HTTP_HOST}变量中与其匹配。使用规则中的模式匹配:

RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com$ [NC]
RewriteRule ^$ index.php?pet=%2 [L]

RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com$ [NC]
RewriteRule ^([^/]+)\.html$ index.php?pet=%2&color=$1 [L]

RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com$ [NC]
RewriteRule ^([^/]+)/([/]+)\.html$ index.php?pet=%2&color=$1&name=$2 [L]