使用mod_rewrite将URL作为参数传递

时间:2010-06-10 09:09:50

标签: mod-rewrite

我想重写动态网址

/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。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

你必须转义点字符,你应该转义反向引用,因为它将成为查询字符串的一部分。你也不一致的是,正则表达式模式匹配假设有一个重写基础(开头没有/)和新路径在开始时添加一个/。您还忘记在重定向参数

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

答案 1 :(得分:0)

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

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

我认为正则表达式对“。”感到很生气。和“ - ”因为它们很特别...... 也许在开头的正斜杠可能会有所帮助,也许不会,有没有

尝试

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