试图让这样的东西工作,但只有第一种情况有效。基本上我需要传递三个变量,这些是三种情况:
cat.domain.com 应该去: 的index.php?宠物猫=
cat.domain.com/orange.html 应该去: ?的index.php宠物猫=&安培;颜色=橙
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?请帮忙!
答案 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]