Mod rewrite 使用mod_rewrite将URL作为参数传递

Mod rewrite 使用mod_rewrite将URL作为参数传递,mod-rewrite,Mod Rewrite,我想重写动态URL /index.php?pid=login&redirect=/previous page.html 像这样的事情 /login.html-r-previous-page.html 我试过这个 RewriteRule ^login.html-r-(.*)$ /index.php?pid=login&redirect=$1 [L] 但没有成功。我还试图将正则表达式改为.+或其他形式,但似乎没有用。也许我在别的地方犯了错误 我不熟悉正则表达式,也不熟悉mod_rewrit

我想重写动态URL

/index.php?pid=login&redirect=/previous page.html

像这样的事情

/login.html-r-previous-page.html

我试过这个

RewriteRule ^login.html-r-(.*)$ /index.php?pid=login&redirect=$1 [L]
但没有成功。我还试图将正则表达式改为.+或其他形式,但似乎没有用。也许我在别的地方犯了错误

我不熟悉正则表达式,也不熟悉mod_rewrite


感谢您的帮助

您必须转义点字符,并且应该转义backreference,因为它将成为查询字符串的一部分。您还不一致,因为正则表达式模式匹配假设存在重写基(开始时没有/),新路径在中间添加了/。您还忘了在重定向参数的开头添加a/

RewriteEngine on
RewriteBase /
RewriteRule ^login\.html-r-(.*)$ index.php?pid=login&redirect=/$1 [L,B]

这是一个快速的答案,很可能是错误的,但:

RewriteRule ^/login\.html\-r\-(.*)$ /index.php?pid=login&redirect=$1 [L]
我认为regex非常喜欢“.”和“-”因为它们很特别。。。 另外,也许一开始的正斜杠会有帮助,也许不会,尝试一下有无

此外,我会检查标志(在[]的末尾),以确保它们是正确的