3

这让我感到困惑,如果它不是特定于脚本的,那么托管我的应用程序的 Amazon AMI 有问题。

我正在发布我的 .htaccess 和索引文件的确切内容。唯一的区别是我要发送的电子邮件。

这是我的 .htaccess 文件

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  Options +SymLinksIfOwnerMatch
  RewriteEngine On
  RewriteBase /
</IfModule>

Options -MultiViews

<IfModule mod_autoindex.c>
  Options -Indexes
</IfModule>

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*)$ index.php/$1 [L,QSA]

这是我的 index.php

<?php

mail('me@email.com', '', '7');

当我加载我的索引页面时,我会收到 2 封使用当前设置的电子邮件。但是,如果我注释掉 RewriteRule 并加载索引页面,我会正确收到一封发送给我的电子邮件。

有没有人遇到过这个?

编辑: access_log 用 RewriteRule 显示这个

[21/Feb/2013:03:48:27 +0000] "GET / HTTP/1.1" 200 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
[21/Feb/2013:03:48:27 +0000] "GET /favicon.ico HTTP/1.1" 200 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"

access_log 在没有 RewriteRule 的情况下显示了这一点

[21/Feb/2013:03:47:58 +0000] "GET / HTTP/1.1" 200 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
[21/Feb/2013:03:47:58 +0000] "GET /favicon.ico HTTP/1.1" 404 295 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
4

2 回答 2

3

问题是您将对不存在的文件的每个请求路由到index.php. 加载页面时,浏览器会自动向http://yourdomain.com/favicon.ico发出请求。由于您的网站上尚不存在此文件,index.php因此再次受到打击。您可以通过签$_SERVER['SCRIPT_FILENAME']index.php并仅在应该是页面时才生成邮件来避免这种情况(与图像文件等相反)。

例如:

if (!preg_match('/\.(ico|jpg|png|gif|txt)$/i', $_SERVER['SCRIPT_FILENAME']))
    mail('me@email.com', '', '7');

这会检查icojpgpng和文件。giftxt

于 2013-02-21T03:55:11.637 回答
0

问题在于 RewriteRule 不正确

这是导致重复电子邮件的原因

RewriteRule ^(.*)$ index.php/$1 [L,QSA]

解决方法是像这样在规则中添加“/”

RewriteRule ^/(.*)$ index.php/$1 [L,QSA]

我的假设是原始RewriteRule文件没有正确捕获GET请求。正如N Rohler指出的那样,favicon.ico正在请求,但请求是作为"/favicon.ico"

原版没有捕捉到的RewriteRule

于 2013-02-21T04:14:26.657 回答