发送多封电子邮件并使用重写规则

时间:2012-09-12 14:51:41

标签: php mod-rewrite

我的.htaccess文件中有以下重写规则

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?$1 [L,QSA]

</IfModule>

在index.php文件中,我通过PHP邮件功能向自己发送电子邮件。

<?php
$body = "<html>";
$body .= "<body>";
$body .= $_SERVER['REMOTE_ADDR'];
$body .= "</body>";
$body .= "</html>";

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: XXX@domain.com' . "\r\n";

mail('XXX@mail.com', 'IP TEST', $body, $headers, "-fXXX@domain.com");
?>

当我在网络浏览器http://sub.domain.com中访问网址时,会向我发送两封电子邮件。

当我访问http://sub.domain.com/index.php

时也是如此

当我在.htaccess文件中评论所有内容时,只会发送一封电子邮件。

我不明白!

2 个答案:

答案 0 :(得分:0)

规则中的语法错误:
来自:RewriteCond %{REQUEST_URI} !=/favicon.ico
需要:RewriteCond %{REQUEST_URI} !^/favicon.ico$

同时在Network标签中检查所有请求的文件中的firebug。它可以帮助调试。

答案 1 :(得分:0)

如果这是你根目录下的默认文件,那么favicon请求仍然会发送到index.php。它没有通过RewriteCond而成为标准请求。请尝试为其返回404。

RewriteEngine on

RewriteBase /

RewriteRule ^favicon.ico$ - [R=404,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]