【发布时间】:2011-08-22 07:52:09
【问题描述】:
我为我的页面设计了两个不同的 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/...)
【问题讨论】:
-
是什么让你觉得每个页面都加载了两次?
-
正如我所提到的:数据库操作和电子邮件调度执行了两次...我通过触发一些系统日志来验证我的假设,这些系统日志也出现了两次。
-
错误的来源是一些 php 代码被调用了两次...真丢脸! :(
标签: apache mod-rewrite url-rewriting