- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以,不幸的是,我有这个无法修改的 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/
是否可以在 .htaccess 中包含来自另一个 htaccess 文件的规则? .htaccess RewriteEngine On RewriteCond ... RewriteRule ...
我正在尝试做的事情: 在我的特定项目的服务器上,我想通过 htaccess 编写 URL 重写规则(从 URL 中删除 .php 或 .html 扩展名)。 我的网站网址: http://enacte
在我的 .htaccess 文件中我已经有一些重写条件和规则,并且它工作正常。 现在我需要将“http 到 https 重定向”添加到我的 htaccess 文件中。 这是我的旧 .htaccess
注意:我写了解决方案。不管怎样,谢谢你。 :) 我知道这似乎是重复的问题:我搜索了很多,我应用了数十条重写规则,但它们不起作用。 我需要从 重定向 www.domain.com/folder1 到 w
我有一个带有 drupal 的多站点,我创建了一个站点,该站点起初应该可以通过多种方式(子域和路径)访问,但现在我只想保留其中一个;所以我应该重定向所有其他人。现在我有: aaa.domain.com
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
我将我的网站从/v1/etc... 目录移动到/v2/etc... 目录,并希望在 htaccess 中进行永久重定向。有人能帮我吗? 最佳答案 您可以使用 mod_rewrite : Rewrite
我想通过 .htaccess 保护文件夹。以下不起作用。它在浏览器中显示登录对话框,但看起来好像用户名和密码不匹配。当我将方法更改为 Basic 时,它运行良好。 AuthUserFile /home
任何人都可以解释以下行吗? RewriteRule ^(.*)$ /index.php/$1 [L] 最佳答案 重写规则的部分分解如下: 重写规则 表示此行将是重写规则,而不是重写条件或其他重写引擎指
我正在尝试从一个域中一个目录中的所有文件创建一个永久的 htaccess 重定向(301)到另一个域,如下所示: 重定向以下目录中的所有文件: http://www.primary.com/apple
我不是 .htaccess 的英雄,但我遇到了一个我认为可能是由它引起的问题。 第一个症状:对我的数据库的简单更改(如用户 IP 跟踪)每次请求都完成了多次,而站点的输出看起来还不错。 经过数小时的跟
我想做一个类似basecamp.com的东西:你公司的名字变成三级域名,http://mycompany.basecamp.com例如。我知道它(很可能)是在.htaccess文件和mod_rewri
我已阅读 this这对我的要求来说似乎太长了。 并尝试过 Redirect /index.php /index2.php但它不起作用(内部服务器错误) 我想要的是将我的一些 php 文件重定向到 in
如果使用此代码,则成功: Redirect 301 /products.php http://website.com.au/product_123.php 但是,如果执行此操作,则不是: Redire
我想重定向这个子域: http://abc.domain-name.com 到根域上使用相同名称的文件夹: http://www.domain-name.com/abc 这样,如果我尝试访问以下文件:
我已经在我的实时站点上设置了 htpasswd 身份验证,并且效果很好,但是当我在开发环境中工作时,我不想被要求输入密码。 在我的 httpd.conf 文件中,我有: SetEnv APP_ENV
之前 我安装了 SSL,一切运行良好!!这是我的根网络服务器 .htaccess 文件中的代码: Options +MultiViews RewriteEngine On RewriteCond %{
我要问一个非常简单的问题。当我运行我的页面时,我不希望我的链接显示这个: http://localhost/example/assets/gallery.php 我想要的是: http://local
我在 htaccess 中有说明,可以让所有请求都通过 index.php 文件。但它禁止访问文件夹和文件。因此,如果我尝试转到/uploads/products/thumbs/file.png 它会
我有一个这样的网址:https://example.com/coins/1&order_by=today以及几个类别,例如: https://example.com/coins/1&order_by=
我是一名优秀的程序员,十分优秀!