.htaccess使用来自request_uri和query_string的参数

时间:2016-04-13 05:49:40

标签: apache .htaccess mod-rewrite

我尝试调用具有此结构的页面:

/page/my-selection.html?p=1
/page/my-selection2.html?p=3
/page/my-selection3.html?p=6

my-selection,my-selection2,...是数据库密钥和分页。 我想在一个页面上重定向它,这可以完成所有的魔法,但我如何使用mod_rewrite来使用RewriteCond的变量?

我试过这种方式,它不起作用:

RewriteCond %{REQUEST_URI} page/(.*)\.html [NC]
RewriteCond %{QUERY_STRING} ^p=(.*)
RewriteRule page/(.*)\.html$ /rewrites/page.php?selection=$1&pagination=$2 [NC]

示例:

  • /page/my-selection.html?p=1应该重定向到 /rewrites/page.php?selection=my-selection&pagination=1
  • /page/my-selection2.html?p=3应该重定向到 /rewrites/page.php?selection=my-selection2&pagination=3
  • /page/my-selection3.html?p=6应重定向到
    /rewrites/page.php?selection=my-selection3&pagination=6

任何想法?!

1 个答案:

答案 0 :(得分:4)

尝试:

RewriteCond %{QUERY_STRING} ^p=(.*)
RewriteRule ^page/(.*)\.html$ /rewrites/page.php?selection=$1&pagination=%1 [NC,L]
  

RewriteRule反向引用:这些是$ N形式的反向引用   (0 <= N <= 9),其提供对分组部分的访问(in   模式的括号),来自RewriteRule   当前的RewriteCond条件集。
   RewriteCond反向引用:这些是%N形式的反向引用(1 <= N <= 9),   它提供对分组部分的访问(同样,在括号中)   模式,从最后匹配的当前集合中的RewriteCond   条件。   http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond