繁体   English   中英

将带有参数的 url 重定向到不同的 url

[英]redirect url with parameters to different urls

我想为凭证卡创建一个短 URL,它使用相应的代码重定向到正确的产品并应用它。

所以实际上最终 url 会显示如下: https://shop.com/client/cart.php?a=add&pid=11&billingcycle=monthly&promocode=v1-B2J3 ("pid"= specific product id | "v1-B2J3"=个人促销代码)

我的想法是,创建短网址: shop.com/promo/"CODE"并且客户端将被重定向(使用 .htaccess 规则)到https://shop.com/client/cart.php?a=add&pid= 11&billingcycle=monthly&promocode= “代码”

到目前为止比较简单。 但是有 4 种产品和 4 种不同的代码布局:

  • V1-2B3K 这去 pid 11
  • V2-2B3K 这去 pid 12
  • W1-2B3K 这到 pid 20
  • W2-2B3K 这去 pid 21

第一个字母和数字定义产品 (pid),连字符后是单独的代码。

所以规则在转发过程中不仅要传递变量,优惠券代码,还必须根据优惠券代码的开头确定PID。

如果您有固定数量的代码,在您的情况下是四个,那么最好一一实现。 尝试实施通用解决方案只会使事情变得复杂且难以维护。

这是一个简单的例子:

RewriteEngine on
RewriteRule ^/?(V1-2B3K)$ /client/cart.php?a=add&pid=11&billingcycle=monthly&promocode=$1 [R=301]
RewriteRule ^/?(V2-2B3K)$ /client/cart.php?a=add&pid=12&billingcycle=monthly&promocode=$1 [R=301]
RewriteRule ^/?(W1-2B3K)$ /client/cart.php?a=add&pid=20&billingcycle=monthly&promocode=$1 [R=301]
RewriteRule ^/?(W2-2B3K)$ /client/cart.php?a=add&pid=21&billingcycle=monthly&promocode=$1 [R=301]

最好从 302 临时重定向开始,然后在确定一切设置正确后才将其更改为 301 永久重定向。 这可以防止在尝试时出现缓存问题......

此规则在 http 服务器主机配置或动态配置文件(“.htaccess”文件)中同样适用。 显然重写模块需要在http服务器中加载并在http主机中启用。 如果您使用动态配置文件,您需要注意在主机配置中完全启用它的解释,并且它位于主机的DOCUMENT_ROOT文件夹中。

还有一个一般性的评论:你应该总是喜欢将这样的规则放在 http 服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。 这些动态配置文件增加了复杂性,通常是意外行为的原因,难以调试,而且它们确实会降低 http 服务器的速度。 它们仅在您无法访问真正的 http 服务器主机配置(阅读:非常便宜的服务提供商)或坚持编写自己的规则的应用程序(这是一个明显的安全噩梦)的情况下作为最后一个选项提供。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM