.htaccess 将path转换为一个get变量

.htaccess 将path转换为一个get变量,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,我将如何转换此URL: 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变量

我将如何转换此URL:

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变量的整个路径,没有一个教程。

请参见下面的编辑

试试这个:

RewriteEngine On

RewriteRule ^(.*)$ ?path=$1 [QSA]
重写规则的第一部分将捕获不带查询字符串(GET参数)的完整路径。重写规则的第二部分将使用一个名为“path”的GET参数重写,该参数包含我们之前捕获的完整路径。然后,使用[QSA]标志(这应该是Apache的默认行为),我们告诉Apache保留原始GET参数,然后将其附加到新的查询字符串中

编辑:

这个答案有一个主要问题,重定向循环。这里有一个更好的解决方案:

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

谢谢你的回答,okio。我实际上正在进行服务器维护,但我会在一切结束后(几个小时)进行测试。到时候会接受的!再次感谢。嗨,Okio,我现在有一个错误:。你对正在发生的事情有什么见解吗?