gpt4 book ai didi

apache - RewriteRule 导致页面重新加载两次

转载 作者:行者123 更新时间:2023-12-04 11:14:50 28 4
gpt4 key购买 nike

我为我的页面设计了两个不同的 RewriteRules:

# Enable URL Rewriting
RewriteEngine on

# exclude followed stuff
RewriteRule ^(js|img|css|favicon\.ico|image\.php|anprobe|content|libs|flash\.php|securimage)/ - [L,QSA,S=2]

# conditions (REQUEST dont point @ file|dir|link)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-F
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

# rules
RewriteRule ^(?!index\.php)brillen/(.*(brillen)|360|neu)/(.*)([a-zA-Z0-9]{5}-[a-zA-Z0-9]{5}(?!\.))(.*)$ /index.php/brillen/$1?art_id=$4&$5&%{QUERY_STRING} [NS,QSA,L]
RewriteRule ^(?!index\.php)(.*)$ /index.php/$1 [NS,QSA,L]

...而且我遇到了一个奇怪的问题,即每个请求都会导致页面内部加载两次,从而导致数据库操作和电子邮件调度也执行两次的问题。

有人对此有任何想法吗?

提前致谢!

注1:根据浏览器的资源跟踪,所有请求的资源都是有效且可用的。

注2:问题可能源于保留和后处理 PATH_INFO 吗? (/index.php/$1 =>/index.php/foo/bar/...)

最佳答案

重写引擎无法使单个 HTTP 请求运行两次 .它将对 Apache 的 HTTP 请求路由到静态文件、代理函数或模块(如 PHP),并在请求中进行更改。但它无法克隆请求并将其提供给 apache 2 次。

当您遇到任何“运行两次”问题时,您可能会受到 的影响。空图像 url 错误 .事实上,它并不是一个真正的错误,它是 HTML 的一个特性(至少在 HTML5 之前)和 url 解析的一个特性。

如果你得到一个 空 GET 网址 , HTML 声明浏览器应该使用相同的参数重新发送相同的查询(给他当前页面的查询)。这可以使 POST 请求发生 2 次(如果请求的第一页是 POST)。那么这些空的 GET url 在哪里呢?大多数时候你会得到:

<IMG SRC="" ...> (in the HTML)

或者:
url() (in the css)

或者:
<script type="text/javascript" src=""></script>
<link rel="stylesheet" type="text/css" href=""> (in the HTML headers)

另请阅读@Jon 对 favicon 查询的回答。您应该始终使用 wget 或 telnet 80 查询来测试没有浏览器行为的结果。

更新: this blog 上提供了详细的解释和跟进添加 HTML5 应该可以消除现代浏览器的这种行为。

关于apache - RewriteRule 导致页面重新加载两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5948063/

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