gpt4 book ai didi

apache - .htaccess - 需要用 "?"替换 URL 中的 "&"

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:13 27 4
gpt4 key购买 nike

所以,不幸的是,我有这个无法修改的 url,并且 paypal checkout 附加了带有“?token=.....”的 token 。问题是代理 url 已经包含了几个参数,所以 paypal token 必须附加“&token=.....”,否则“token”作为查询字符串 var 是不可见的。

认为它可能起作用的唯一方法是替换“?”在 .htaccess 文件中使用“&”。 (除非有人有更好的主意!)

包含 Paypal token 的 URL:
https://some.samplesite.com/proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F938 9B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success?token= EC-8FJ83689WF858702D

我需要可以解决问题的 .htaccess 规则。我还包含了现有的 .htaccess 文件,以确保不会违反其他规则。

RewriteEngine on
RewriteBase /

# if not https, redirect
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# if only / is present, need to stop looping (domain.com/)
RewriteRule ^$ - [L]

# match subdomain
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} !^app
RewriteCond %{HTTP_HOST} ^([^\.]+)\.[^\.]+\.[^\.]+$
RewriteRule ^(.*)$ /$1?sub=%1 [QSA]

# ignore any .php|.html|.asp|.ico files and certain directories
RewriteRule ^(exec|images|css|js|xyz|(.*)\.php|(.*)\.html|(.*)\.asp|(.*)\.ico)($|/) - [L]

# stop if index.php
RewriteRule ^index\.php$ - [L]

# map all requests to 'path'
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [L]

感谢您的帮助!

已编辑:最终字符串将被分解为以下查询字符串参数

*path* - proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/

*sub* - some

*trans* - success

请注意 trans 实际上是path 的一部分,但是b/c 它是用“&”附加的,它被转换成查询字符串参数。

htaccess 日志

init rewrite engine with /proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success
strip matching prefix: /proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success -> proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success
applying pattern ^ to uri proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success
RewriteCond: input='443' pattern='!^443$' => not-matched
strip matching prefix: /proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success -> proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success
applying pattern ^ to uri proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success
RewriteCond: input='GET /proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success HTTP/1.1' pattern='\s/+(.+?)\?(token=[^&\s]+\S*)\s' => not-matched
strip matching prefix: /proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success -> proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success
applying pattern ^$ to uri proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success
strip matching prefix: /proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success -> proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success
applying pattern ^(.*)$ to uri proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success
RewriteCond: input='' pattern='^$' => matched
RewriteCond: input='demo.samplesite.com' pattern='!^app' => matched
RewriteCond: input='demo.samplesite.com' pattern='^([^\.]+)\.[^\.]+\.[^\.]+$' => matched
Rewrite URL to >> /proxy/091F126B7B6D624623606A1BB67EDC430885ABAF02AD5975FF2A8276E21FD083091F126B7B6D624623606A1BB67EDC430151C3DF14A66603F9389B45EC89C9057C76A20EA0B4746BA97D7027E67E9EBC6437DCCA31B42521A4794F8E766AB37A76C0E6BD4FC92C60351E7C5FADB37CF0F82210A04BF29A74/&trans=success?sub=demo&token=EC-76D265115N209873K [REWRITE]

最佳答案

这样说:

RewriteEngine on
RewriteBase /

# if not https, redirect
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

# convert ?token=... to &token=...
RewriteCond %{THE_REQUEST} \s/+(.+?)\?(token=[^&\s]+\S*)\s [NC]
RewriteRule ^ /%1&%2? [L,NE,R=302]

# if only / is present, need to stop looping (domain.com/)
RewriteRule ^(index\.php)?$ - [L,NC]

# match subdomain
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} !^app
RewriteCond %{HTTP_HOST} ^([^.]+)\.[^.]+\.[^.]+$
RewriteRule ^(.*)$ $1?sub=%1 [L,QSA]

# ignore any .php|.html|.asp|.ico files and certain directories
RewriteRule ^(exec|images|css|js|xyz|(.*)\.php|(.*)\.html|(.*)\.asp|(.*)\.ico)($|/) - [L]

# map all requests to 'path'
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?path=$1 [L,QSA]

更新:

在使用 URL 进行测试时:

http://abc.dev.localhost/proxy/foobar/&trans=success?token=EC-8FJ83689WF858702D

重定向到:

http://abc.dev.localhost/proxy/foobar/&trans=success&token=EC-8FJ83689WF858702D

并为 print_r($_GET) 输出显示:

Array
(
[path] => proxy/foobar/
[trans] => success
[token] => EC-8FJ83689WF858702D
[sub] => abc
)

关于apache - .htaccess - 需要用 "?"替换 URL 中的 "&",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31410288/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com