使用子域和其他参数重写URL

时间:2015-06-19 13:56:16

标签: php regex .htaccess mod-rewrite url-rewriting

我有一个变体子域,需要在斜杠后面的url后面重写和多个附加参数。

我目前的重写规则如下:

RewriteCond %{HTTP_HOST} ^((?!www).+)\.classifiedads4free\.com$ [NC]
RewriteCond %{REQUEST_URI} !\.(?:jpe?g|png|gif|bmp|php)$ [NC]
RewriteRule (.*) pages/list.php?country=%1&category=%2 [L,QSA]

RewriteRule    ^cat/([A-Za-z0-9-]+)?$      pages/list.php?category=$1 [QSA,NC,L]

我可以像访问每个人一样重写 当我去http://us.classifiedads4free.com。我可以阅读国家参数。 当我转到http://classifiedads4free.com/cat/jobs时,我可以阅读类别参数。

但我无法获得http://us.classifiedads4free.com/cat/jobs的正确参数。

仅显示国家/地区参数。如何使两个参数都考虑在内?

1 个答案:

答案 0 :(得分:0)

RewriteCond(s)只能有一个规则,因此您需要包含再次选择国家/地区的条件以及规则。如果国家代码不存在,您仍需要独立的规则。

RewriteCond %{HTTP_HOST} ^((?!www).+)\.classifiedads4free\.com$ [NC]
RewriteCond %{REQUEST_URI} !\.(?:jpe?g|png|gif|bmp|php)$ [NC]
  RewriteRule ^cat/([A-Za-z0-9-]+)?$ pages/list.php?country=%1&category=$1 [QSA,NC,L]

RewriteCond %{HTTP_HOST} ^((?!www).+)\.classifiedads4free\.com$ [NC]
RewriteCond %{REQUEST_URI} !\.(?:jpe?g|png|gif|bmp|php)$ [NC]
  RewriteRule (.*) pages/list.php?country=%1&category=%2 [L,QSA]

RewriteRule    ^cat/([A-Za-z0-9-]+)?$      pages/list.php?category=$1 [QSA,NC,L]

规则首先是重要的,否则(.*)会消耗cat/...并选择错误的规则