【问题标题】:htaccess rewrite GET request to another GET requesthtaccess 将 GET 请求重写为另一个 GET 请求
【发布时间】:2013-11-02 19:03:46
【问题描述】:

我正在尝试重写以下网址:

http://mysite.com/app/checkout/success?token=2V5W&PayerID=WBBQER

http://mysite.com/app/index.php?url=checkout/process/2V5W/WBBQER


仅对格式为 (/checkout/success?token=xx&payerID=xx) 的 GET 请求进行重写,其中 "token""payerID" 都是固定参数.

我还包括我当前的 .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1

我一直在尝试无数 .htaccess 的可能性,但无济于事,因此我们将不胜感激。

【问题讨论】:

  • 没有足够的时间来写答案,但想法是你制作一个描述你想要的参数格式的 RewriteCond。 (分析%{QUERY_STRING} 变量)。然后进行重写。这个答案应该会有所帮助:stackoverflow.com/questions/2703821/…

标签: regex .htaccess


【解决方案1】:

试试这个

RewriteCond %{QUERY_STRING}  ^token=([^\&]+)&PayerID=(.*)$ [NC]
RewriteRule ^app/checkout/success$ http://mysite.com/app/index.php?url=checkout/process/$1/$2 [R=301,NE,NC,L]

【讨论】:

  • 太棒了,这就像一个魅力!只需将“$1”和“$2”更改为“%1”和“%2”。顺便说一句,“token”变量中可能有破折号 (-)。这些也会被检测到吗?
  • 是的。这也适用于破折号,因为正则表达式将匹配任何不是 & 字符的东西。如果您对此解决方案感到满意,请不要忘记投票 :)
猜你喜欢
  • 2015-04-08
  • 2021-05-11
  • 1970-01-01
  • 2021-08-04
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
相关资源
最近更新 更多