0

第一个 GET 参数应该有一个?. 当我尝试这个网址时,我无法$_GET['type']

http://localhost/category/general?type=pages&v=1

它只适用于一个&,当我使用$_GET['type']我得到pages

http://localhost/category/general&type=pages&v=1

这是我的mod重写..

RewriteRule ^category/([A-Za-z0-9-]+)(\?type=[A-Za-z0-9-]+)?([^.]+)?/?$ /category.php?c=$1&type=$2&query=$3 [L]

我该如何解决这个问题,所以这个 urlhttp://localhost/category/general?type=pages&v=1允许我$_GET['type']使用pages结果?

4

2 回答 2

0

Replace your existing RewriteRule with this one:

RewriteRule ^category/([A-Za-z0-9-]+)(&.+)$ /category.php?c=$1$2 [L,NC]

This will make all of your $_GET variables available to category.php

e.g. for you URI of: http://localhost/category/general&type=pages&v=1 this solution will give following query string:

$_SERVER["QUERY_STRING"] = 'c=general&type=pages&v=1'
于 2013-07-09T16:15:13.943 回答
0

我认为这里的问题是RewriteRule你试图匹配查询字符串的一部分,这是不可能的。

如果我正确理解您的问题,您希望http://example.com/category/general?type=pages&v=1服务器将请求解释为http://example.com/category.php?c=general&type=pages&query=1

要匹配查询字符串,您需要在规则前面加上条件。以下应该有效:

RewriteCond %{QUERY_STRING} type=([^&]+)
RewriteCond %{QUERY_STRING} v=([^&]+)
RewriteRule ^category/([^/]+) /category.php?c=$1&type=%1&query=%2

前两行是先决条件,说明请求的 URL 需要同时具有type=v=作为查询字符串的一部分。最后一行重写了请求。这意味着只有符合以下条件的 URL 才会被重写:category/SOMETHING?type=SOMETHING&v=SOMETHING

于 2013-07-09T16:08:00.813 回答