URI用假子域和多个variables重写

有人可以请尝试使用mod重写的帮助,所以foo.domain.com被重写为domain.com/p.php?s=foofoo.domain.com/bardomain.com/p.php?s=foo&p=bar

目前我的.htaccess是:

 RewriteEngine On # Remove www RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC] RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L] # Rewrite subdomain etc. RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC] RewriteRule ^([^/]+)/?$ p.php?s=%1&p=$2 [QSA,L,NC] 

但我不知道如何抓住第二个variables(是可选的,并在URI末尾的斜杠后,我试图改变条件结束?/(.*)$ ,但无济于事和我的国防部重写技能肯定是悬而未决的!

这停止了​​怪异的redirect,但并没有从URI中删除斜杠(我从SEO的angular度来看,多个URI的重复内容是不好的:))是否需要redirect? 我试图添加R = 301的标志,但没有奏效。 有任何想法吗?

(对不起,添加答案,“添加评论”button已经消失!)

如果在空的URL部分的情况下可以使p参数为空,那么以下代码应该可以工作:

 # Rewrite subdomain etc. RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC] RewriteCond %{REQUEST_URI} !p.php RewriteRule ^(.+/)?([^/]*)$ p.php?s=%1&p=$2 [QSA,L,NC] 

如果你想完全忽略p ,以防直接命中foo.domain.com,你需要在这个情况下添加上面的特殊规则,匹配空的URL – 像这样:

 RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC] RewriteCond %{REQUEST_URI} !p.php RewriteRule ^$ p.php?s=%1 [QSA,L,NC]