正如在评论中提到,你可以结合使用服务器内部重写与服务器端代理模块,以防止两个请求被发送:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} \.(php)$
RewriteRule ^/?(.*)$ http://example.com:90/$1 [P,END]
如果您使用的是很旧版本的Apache http服务器,您可能必须用L
标志替换END
标志。
对于上述工作的一些前提条件必须满足:
以上规则应在0风格动态配置文件,同样的主机配置部分和工作。
另一种方法是使用仅代理模块:
<LocationMatch ^/(.*\.php)$>
ProxyRequests off
ProxyPass/http://example.com:90/
ProxyPassReverse/http://example.com:90/
</LocationMatch>
这种方法只适用于HTTP服务器的主机配置,不动态配置文件。
一般提示:你应该总是喜欢在http服务器主机配置,而不是使用动态配置文件(“的.htaccess”)中这样的规则。这些文件出了名的错误,很难调试,他们真的放慢了服务器。它们仅作为最后一种选择,用于您无法控制主机配置的情况(阅读:真正便宜的托管服务提供商),或者您拥有依赖编写自己的重写规则的应用程序(这是一个明显的安全噩梦)。
显然,你有两个要求:第一击中了你的重写规则,得到回应与HTTP状态307,接下来打你重写的URL。 – arkascha
好的,下一个请求被取消的原因是什么,这在Chrome和Mozilla中运行良好,问题出在Safari上。 –
以及如何避免发送2个请求? –