寻求一些帮助,让我的网站了解电子邮件中使用的链接,该电子邮件中有几个$ _GET vars可以在地址栏上整齐地显示。
该电子邮件是营销电子邮件活动的一部分,并发送到许多地址,电子邮件中的链接是动态的,并从电子邮件中获取嵌入的信息以填充$ _GET变量。
即。 www.foobar.com?page=twenty2talk&name=Joe Bloggs& position = director& company = The Butchers& telephone = 000& email=joe.bloggs@thebutchers.co.uk
因此,使用电子邮件中使用的上述链接示例,用户点击该链接示例并按照规范定向到我们的网站。
我遇到的麻烦是通过mod re_write转换该信息($ _GET变量内容将始终改变)。
在我的.htaccess文件中,我有以下RewriteRule。
RewriteRule ^twenty2talk$ index.php?
page=twenty-2-talk
&name=$1
&position=$2
&company=$3
&telephone=$4
&email=$5 [L]
我希望我没有错过任何关键信息,但如果是这样,请告诉我。
提前致谢,
丹
答案 0 :(得分:1)
我假设您在电子邮件中的链接看起来像这样
www.foobar.com/twenty2talk?name=Joe Bloggs&position=director&
company=The Butchers&telephone=000&email=joe.bloggs@thebutchers.co.uk
并且您希望获得此基础网址
www.foobar.com/index.php?page=twenty2talk&name=Joe Bloggs&position=director&
company=The Butchers&telephone=000&email=joe.bloggs@thebutchers.co.uk
(仅为清晰起见插入了换行符。)
如果你真的需要匹配查询字符串中的东西(之后的东西?),你可以,但不能单独使用RewriteRule。幸运的是你不需要。在mod_rewrite中有一个名为querystring append的东西,它允许你只是向现有的查询字符串添加一些内容。
RewriteRule ^twenty2talk/?$ index.php?page=twenty-2-talk [QSA,L]
该规则添加page=twenty-2-talk
但也保持名称等不变。 /?
部分允许使用或不使用尾部斜杠编写起始URL,这是一种很好的做法。问号的字面意思是“匹配前一个字符0或1次”。
如果您有多个此类广告系列,则可以编写更具动态性的规则:
RewriteRule ^(twenty2talk|winfreebeer|wowamazing)/?$ index.php?page=$1 [QSA,L]
在这个特定的例子中,将Tweettalk wille重写为page=twenty2talk
而不是连字符,而不是page=twenty-2-talk
。但这没关系 - 只需在PHP代码中检查两者。
将来我建议为所有广告系列使用一个特殊的虚拟“文件夹”,这样可以实现一个包罗万象的规则。
RewriteRule ^campaigns/([^/]+)/?$ index.php?page=$1 [QSA,L]
该规则将抓住
www.foobar.com/campaigns/twenty2talk?name=...
www.foobar.com/campaigns/winfreebeer?name=...
www.foobar.com/campaigns/wowamazing?name=...
等。所以你不需要为每个广告系列重写.htaccess文件。
答案 1 :(得分:0)
您的重写规则不正确,您使用占位符($ X),但您没有抓到任何内容。
此外,如果我阅读它,它会告诉“www.foobar.com/twenty2talk”到www.foobar.com/index.php?page=twenty-2-talk&name=$1&position=$2&company= $ 3&电话= $ 4& email = $ 5 [L]
我不确定那是你想要实现的......
你能写下一个可以给重写模块(好的)和它必须导致的一个例子(php得到一个)