我的htaccess文件是否导致对一个页面的多次调用?

时间:2009-08-04 21:00:38

标签: .htaccess mod-rewrite

我认为我使用mod_rewrite的htaccess文件导致我的页面不止一次被调用。任何人都可以看到我的当前htaccess文件是否会发生这种情况?或者,如果有可能吗?这只发生在view.php页面中(从我所看到的)。

# REWRITE DEFAULTS
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.mysite\.com$ [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L]

# /view.php?t=h5k6 externally to /h5k6
RewriteCond %{THE_REQUEST} ^GET\ /view\.php
RewriteCond %{QUERY_STRING} ^([^&]*&)*t=([^&]+)&?.*$
RewriteRule ^view\.php$ /%2? [L,R=301]

# /h5k6 internally to /view.php?t=h5k6
RewriteRule ^([0-9a-z]+)$ view.php?t=$1 [L]

我的PHP脚本中发生的事情是它们不止一次被调用,或者至少一个函数被调用多次,即使我确保它被调用一次!

全部谢谢

2 个答案:

答案 0 :(得分:1)

那些mod_rewrite条件和规则不会导致多次调用脚本。规则本身可以多次调用。每次成功将URL重写为新请求时,新请求将再次调用规则。但是,只要识别并检索到一次“真实”资源(脚本,网页等),就会停止此操作。

您的网页上是否还有其他引用可以提出其他请求?例如,IMG标记将导致浏览器发出另一个请求。这些请求将导致规则再次运行。看起来像点(例如picture.jpg)的东西不符合你的规则,但其他东西可能会。

要查找的其他内容是引用的CSS和脚本。

答案 1 :(得分:0)

如果没有阅读粘贴的代码,我想说不。 htaccess遍历每一行,并在匹配请求的第一条规则处停止