怎么写 '?'在.htaccess

时间:2012-11-18 19:45:01

标签: php .htaccess

我希望使用.htaccess

转发网址
categoryname?page=23&sort=alpha to category.php?name=catgoryname&page=23&sort=alpha

但是我无法使用charachter ?编写rewriteRule,我尝试使用\?但总是遇到一些问题它不起作用。

1 个答案:

答案 0 :(得分:1)

必须在RewriteCond中匹配查询字符串,而不是RewriteRule中的查询字符串。然后使用[QSA]将现有查询字符串与新的name=参数一起附加到重写的请求中。

RewriteEngine On
# If both page=, sort= *must* be present
RewriteCond %{QUERY_STRING} page=(\d+)
RewriteCond %{QUERY_STRING} sort=([a-z]+)
# Rewrite categoryname (or other string) into category.php
RewriteRule ^(.+) category.php?name=$1 [L,QSA]

如果page=sort=都存在,则上述规则匹配。如果他们不需要出现以重写categoryname,那么可以省略两个RewriteCond

# If the page= and sort= are not *required*, omit them.
RewriteEngine On
# Rewrite categoryname (or other string) into category.php
RewriteRule ^(.+) category.php?name=$1 [L,QSA]