【问题标题】:htaccess redirect if parameter exists not working如果参数存在,htaccess 重定向不起作用
【发布时间】:2021-12-24 15:57:48
【问题描述】:

如果存在特殊参数,我正在尝试重写任何 URL。

这样会发生:

发件人:www.example.com/somepage/someother/?entryValue=somevalue

收件人:www.example.com/somepage/someother/?product=test&special=12345ls&linkSource=website

我尝试跟随,但它没有按预期工作: 此代码添加 var/www/* 而不是链接 www.example.com/var/www/web6/htdocs/example.com/index.php/*

RewriteCond %{QUERY_STRING} (^|&)entryValue=somevalue
RewriteRule ^(.*)$ $1/?product=test&special=12345ls&linkSource=website [L,R]

这段代码删除了路径:

RewriteCond %{QUERY_STRING} (^|&)entryValue=somevalue
RewriteRule ^(.*)$ /?product=test&special=12345ls&linkSource=website [L,R]

我怎样才能让它工作?

【问题讨论】:

  • 感谢您分享您的努力,您能否更清楚地说明您要从哪个网址重定向到哪个网址?
  • URL 应该保持不变,只是 get 参数应该改变,如果 URL 有参数 (entryValue=somevalue)。然后页面应该使用新参数重新加载。
  • 能否请您以这样的形式提及:FROM http://localhost:/test/etc/test TO http://localhost/someting else here..,以便我们更好地理解它,因为您在问题中提到的网址看起来不太清楚,谢谢。
  • 我想要这个:如果这个链接在没有 get var 的情况下打开,什么都不会发生:localhost:/test/etc/test 但是如果链接包含:localhost:/test/etc/test?entryValue=somevalue get var 应该变成这样:localhost:/test/etc/…跨度>
  • 你的意思是你点击链接www.example.com/somepage/someother 需要重定向到localhost:/test/etc/test url?请务必在此表格中提及以澄清要求。

标签: .htaccess redirect mod-rewrite get


【解决方案1】:
RewriteCond %{QUERY_STRING} (^|&)entryValue=somevalue
RewriteRule ^(.*)$ $1/?product=test&special=12345ls&linkSource=website [L,R]

您需要在 substitution 字符串的开头包含一个斜杠前缀。像这样:

RewriteRule ^(.*)$ /$1/?product=test&special=12345ls&linkSource=website [L,R]

没有斜杠前缀(RewriteRulepattern 匹配的 URL 路径不包括斜杠前缀)被视为 relative 和目录前缀(即/var/www/...)将被添加回来,并导致您看到格式错误的重定向。

更新:

但这会以“index.php”结尾并且路径丢失了

你把指令放在了错误的地方并且有一个冲突。 mod_rewrite 指令的顺序很重要。

通常,像这样的外部重定向需要在任何内部重写(如前端控制器)之前靠近 .htaccess 文件的顶部。

【讨论】:

  • 谢谢,但这会以“index.php”结尾并且路径丢失了
  • @WimDiesel 您与其他指令有冲突。请在您的问题中包含完整的.htaccess 文件,并遵守此规则。
  • 就是这样!你的权利,非常感谢。我已经把它放到了 htaccess 的另一部分,现在它可以工作了。非常感谢大家。
  • @WimDiesel 像这样的重定向需要靠近 .htaccess 文件的顶部,在前端控制器之前。
  • @WimDiesel 不客气。请考虑支持您认为有帮助的答案。谢谢,非常感谢。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 2015-03-07
  • 2015-08-01
  • 1970-01-01
相关资源
最近更新 更多