加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – apache mod_rewrite中的奇怪行为

发布时间:2020-12-13 16:17:46 所属栏目:PHP教程 来源:网络整理
导读:我对理解mod_rewrite行为有疑问. 我将用一个例子来说明这一点. 我的根目录中有3个文件:.htaccess,index.php和test.php. 文件内容: 的.htaccess RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewr
我对理解mod_rewrite行为有疑问.
我将用一个例子来说明这一点.
我的根目录中有3个文件:.htaccess,index.php和test.php.
文件内容:

的.htaccess

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+) ?link=$1 [L]

的index.php

<?php
$db = mysqli_connect('localhost','root','','mydb'); 
$db->real_query ("INSERT INTO `test` (`str`) VALUES ('test_string')");
print_r($_GET);
?>

test.php的

<?php
$db = mysqli_connect('localhost','mydb'); 
$db->real_query ("INSERT INTO `test` (`str`) VALUES ('another_test_string')");
print_r($_GET);
?>

因此,当我使用浏览器访问我的站点的根文件夹时,会在数据库中插入两个字符串 – “test_string”和“test_string”.如果我去/test.php,还会插入两个字符串 – 一个来自index.php脚本 – ‘test_string’,另一个来自test.php字符串 – ‘another_test_string’.如果我从.htacess中删除重写规则,则只会为两个页面插入一个字符串.我无法理解这种行为 – 为什么所有脚本都被执行两次?特别是我不明白为什么这会发生在test.php上,因为我写了RewriteCond%{REQUEST_FILENAME}!-f,所以不应该重写.
先感谢您.

解决方法

一旦处理完代码片段,您将拥有的PHP代码将插入到数据库中.

如果多次执行,您将在数据库中看到更多插入.

但是,重写规则也只执行一次.

因此,您所经历的内容可能与您的重写规则完全无关.如果您不信任我,请为重写启用日志记录(see apace docs)并按照跟踪进行操作.

你可能坐在电脑前太久了,所以只需喝一杯茶,放松一下,找到那个虫子.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读