.htaccess rewriterule星号量词不起作用

时间:2016-04-28 11:27:49

标签: apache .htaccess mod-rewrite

我的.htaccess中有一条规则要解析这样的网址:

https://www.myweb.com/folder/ABCD/HIJK/wxyz/?dclid=Tzf3YrswCFZNmGwodtrALQg

进入这个:

https://anotherweb.com/folder/?param1=ABCD&param2=HIJK&param3=wxyz&dclid=Tzf3YrswCFZNmGwodtrALQg

" ABCD"可以是任何字符串或空。 " 1234"可以是任何字符串。 " WXYZ"可以是任何字符串。

因此,如果第一个参数为空,也可能发生这种情况:

https://www.myweb.com/folder//HIJK/wxyz/?dclid=Tzf3YrswCFZNmGwodtrALQg

这是我的.htaccess中的重写:

RewriteRule ^folder/([^/]*)/([^/]+)/([^/]+)/ https://anotherweb.com/folder/?param1=$1&param2=$2&param3=$3 [L,QSA]

在第一个参数(" ABCD"在前面的示例中)不为空的所有情况下,一切都正常。

但是当那个参数不为空并且我们收到...folder//HIJK/...时,它无法将param1解析为空,我得到一个404 http代码。

我认为正则表达式的这部分([^/]*)可以解决问题,但似乎我在这里遗漏了一些东西。

有人可以帮我吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

RewriteEngine On
RewriteRule ^folder/([^/.]*)/([^/.]+)/([^/.]+)/ https://anotherweb.com/folder/?param1=$1&param2=$2&param3=$3&%{QUERY_STRING} [L]

请检查上述代码是否按预期工作。