用.htaccess重写的URL使重复的mysql条目

Tom*_* S. 5 php mysql .htaccess mod-rewrite

如果使用.htaccess重写url,则使用php执行所有INSERT查询两次(不需要的重复)

我的.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

和index.php:

<?php define('DB_LOGIN', 'mylogin');
define('DB_PASS', 'mypass');
define('DB_HOST', 'localhost');
define('DB_TYPE', 'mysql');
define('DB_NAME', 'dbname');

$mysql = MySQL_Connect(DB_HOST, DB_LOGIN, DB_PASS);
$mysql_db = MySQL_Select_DB(DB_NAME);

mysql_query("INSERT INTO `pages` (`title`, `slug`) VALUES ('TEST', 'test')"); ?>
Run Code Online (Sandbox Code Playgroud)

一次加载index.php之后,我在mysql中有两个相同的条目。当我删除.htaccess时,一切正常,因此,问题一定在那里。.htaccess中的重写定义来自Wordpress-我喜欢它。

我尝试使用Medoo框架,但条目仍然重复。

那么,有什么建议吗?:-)

Jus*_*man 1

默认情况下,浏览器会自动请求 favicon.ico 文件。
但是您没有任何 favicon.ico 文件,因此它被重写(您的 htaccess 中的规则)。
这就是为什么你有重复执行的原因。

解决方案:

  1. 添加 favicon.ico 文件
  2. 如果请求的 url 是 favicon,则不要插入(在 index.php 中)
  3. 使用规则在您的 htaccess 中禁止它