Mod重写从URL中删除参数

时间:2013-10-05 15:45:10

标签: php apache .htaccess mod-rewrite

当我执行mod_rewrite时,我丢失了URL参数,我不明白为什么......

我必须在网址中添加国家/地区代码才能进行本地化。所以我的旧网址:

原始网址:

www.domain.com/mail_confirmation.php?id=222 

现在看起来像

www.domain.com/us/mail_confirmation.php?id=222

Mod重写应该调用:

www.domain.com/mail_confirmation.php?id=222?country=us

这是我需要帮助的规则。它没有达到我的预期,并且在此过程中丢失了参数:

RewriteRule ^([a-zA-Z]{2})/(.+)\?(.+) $2?$3&country=$1

另一个可能影响的规则就是这个,在文件的最开头:

RewriteRule ^([a-zA-Z]{2})/?$  index.php?pais=$1

你看到这里有什么错误吗?我很感激你的帮助!

1 个答案:

答案 0 :(得分:2)

您的RewriteRule需要

RewriteRule ^([a-zA-Z]{2})/(.+)$ $2?country=$1 [QSA,L]

请注意,网址参数可用于RewriteRule内的匹配。如果您只需要附加一个额外的URL参数,您可以使用[QSA]标记来处理附加原始网址参数。