将路径转换为一个get变量

时间:2014-04-27 21:51:00

标签: .htaccess mod-rewrite url-rewriting

我将如何转换此网址:

http://example.com/this/is/my/path.html http://example.com/this/is/my/path.html?var=2&varr=3

到此:

http://example.com?path=this/is/my/path.html http://example.com?path=this/is/my/path.html&var=2&varr=3

我已经看过很多关于如何将它转换为多个get变量的教程,但是对于包含get变量的整个路径也没有。

1 个答案:

答案 0 :(得分:2)

请参阅下面的编辑

试试这个:

RewriteEngine On

RewriteRule ^(.*)$ ?path=$1 [QSA]

RewriteRule的第一部分将捕获没有查询字符串的完整路径(GET参数)。 RewriteRule的第二部分将使用名为"路径"的GET参数重写。包含我们之前捕获的完整路径。然后,使用[QSA]标志(应该是Apache的默认行为),我们告诉Apache保留原始GET参数并将其附加到新的查询字符串。

编辑:

这个答案存在一个主要问题,即重定向循环。这是一个更好的解决方案:

RewriteEngine On
RewriteCond %{QUERY_STRING} !path=
RewriteRule ^(.*)$ ?path=$1 [QSA,L]