我的.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文件中评论所有内容时,只会发送一封电子邮件。
我不明白!
答案 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]