php – apache mod_rewrite中的奇怪行为

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – apache mod_rewrite中的奇怪行为脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我对理解mod_rewrITe行为有疑问.
我将用一个例子来说明这一点.
我的根目录中有3个文件:.htaccess,index.PHPtest.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)并按照跟踪进行操作.

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

脚本宝典总结

以上是脚本宝典为你收集整理的php – apache mod_rewrite中的奇怪行为全部内容,希望文章能够帮你解决php – apache mod_rewrite中的奇怪行为所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。