.htaccess 使用 request_uri 和 query_string 中的参数

Mar*_*rco 4 apache .htaccess mod-rewrite

我尝试使用这种结构调用页面:

/page/my-selection.html?p=1
/page/my-selection2.html?p=3
/page/my-selection3.html?p=6
Run Code Online (Sandbox Code Playgroud)

其中 my-selection, my-selection2, ... 是数据库键, p 是分页。我想将它重定向到一个页面上,这可以完成所有魔术,但是我如何使用 mod_rewrite 来使用来自两个 RewriteCond 的变量?

我是这样试的,有点不行:

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

例子:

  • /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

有任何想法吗?!

Cro*_*ses 6

尝试:

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

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