Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mod_重写影响get变量_Php_Apache_Mod Rewrite - Fatal编程技术网

Php mod_重写影响get变量

Php mod_重写影响get变量,php,apache,mod-rewrite,Php,Apache,Mod Rewrite,我有一个基于Apache的PHP博客,其中有一个简单的mod_重写: Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*)$ index.php?story=$1 [L] 但是,当我在PHP脚本中查看$_GET['story']时,每次都会显示“index.PHP” 有什么想法吗?如果在传递过程中发生任何导致内部或外部重定向的更改,Apache将再次运行规则。您应该使用index.php的规则来捕捉这一点 RewriteRule

我有一个基于Apache的PHP博客,其中有一个简单的mod_重写:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^(.*)$ index.php?story=$1 [L]
但是,当我在PHP脚本中查看$_GET['story']时,每次都会显示“index.PHP”


有什么想法吗?

如果在传递过程中发生任何导致内部或外部重定向的更改,Apache将再次运行规则。您应该使用index.php的规则来捕捉这一点

RewriteRule ^index\.php$ - [L]
它只是按原样使用那个地址。这就是WordPress所做的

根据您的apache版本,您可以使用RewriteLogLevel或LogLevel将重写日志级别设置为8。在旧版本中,这必须在httpd.conf中完成,因此您需要一个本地测试站点

不要让它继续登录,否则您的性能将受到影响

编辑:

下面是L旗下的一段引语:


如果您在.htaccess文件或节中使用RewriteRule,了解规则的处理方式非常重要。这种方法的简化形式是,一旦处理了规则,重写后的请求将返回给URL解析引擎,以执行可能的操作。在处理重写请求时,可能会再次遇到.htaccess文件或节,因此可以从一开始就再次运行规则集。最常见的情况是,如果其中一条规则导致重定向(内部或外部重定向),导致请求过程重新启动,则会发生这种情况。

这是否在文档根目录中?或者你有更高的目录重写规则吗?启用
RewriteLog
对其进行详细调试。
$1
(.*)
捕获的内容,因此它将从开始到结束捕获任何内容(由于
^
$
)。你输入的网址是什么,让
$\u获得['story']
index.php
?example.com/blog/index.php?story=12345=example.com/blog/12345我只是想知道这种情况发生了多少次,是什么让它停止了looping@WalterTross你可以很容易地创建一个重写无限循环,我今天下午做了几次。大多数浏览器都会通过抱怨重定向太多来让您知道。是的,但在本例中有一个[L],没有[R],而且似乎像
index.php?story=index.php
index.php?story=index.php?story=…
这样的东西确实被这样调用了,正是您提到的文档提供了相同的替代解决方案problem@WalterTross我知道,这是终点标志。我不确定这是否适用于apache的旧版本,在我10年的apache书中没有提到。我还没有测试过。