【问题标题】:Is my htaccess file causing multiple calls to one page?我的 htaccess 文件是否会导致对一页的多次调用?
【发布时间】:2009-08-06 06:09:51
【问题描述】:

我认为我使用 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 脚本中发生的情况是它们被多次调用,或者至少一个函数被多次调用,即使我已确保它被调用一次!

谢谢大家

【问题讨论】:

  • 您的浏览器有响应吗?似乎这些规则会导致循环并且永远不会运行您的页面。
  • 是的,页面正常显示,但即​​使发出了一个请求,页面似乎也有很多点击。
  • 好的,我知道如何使用 THE_REQUEST 避免循环。

标签: .htaccess mod-rewrite


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2023-02-10
      • 2021-08-14
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 2012-02-03
      • 1970-01-01
      相关资源
      最近更新 更多