Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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 htaccess将所有请求重写到单个控制器_Php_.htaccess - Fatal编程技术网

Php htaccess将所有请求重写到单个控制器

Php htaccess将所有请求重写到单个控制器,php,.htaccess,Php,.htaccess,与codeigniter类似,我希望捕获所有请求并将它们重写为index.php文件,该文件位于我的web可访问文件夹的根目录中。与codeigniter上的示例不同,我不想在重写文件之前检查文件是否存在(因为我不想允许直接访问任何文件) 我使用以下重写规则取得了部分成功: RewriteRule ^(.*)$ index.php/$1/ [L] 然而,我能让它工作的唯一方法是在它之前添加一个重写条件,它会进行某种检查,以确保请求不是针对index.php的,否则我会得到一个500内部服务器错

与codeigniter类似,我希望捕获所有请求并将它们重写为index.php文件,该文件位于我的web可访问文件夹的根目录中。与codeigniter上的示例不同,我不想在重写文件之前检查文件是否存在(因为我不想允许直接访问任何文件)

我使用以下重写规则取得了部分成功:

RewriteRule ^(.*)$ index.php/$1/ [L]
然而,我能让它工作的唯一方法是在它之前添加一个重写条件,它会进行某种检查,以确保请求不是针对index.php的,否则我会得到一个500内部服务器错误。我看了一下错误日志,似乎是因为太多的重复。我知道如果request index.php不重要,因为它们会命中正确的文件,但我不理解这种情况的必要性,当我不知道为什么它必须存在时,我觉得包括它很肮脏

工作规则是

RewriteCond %{REQUEST_URI} !^/index.php/
同样值得一提的是,这种重写条件同样有效,但我也不知道为什么需要它

RewriteCond %{REQUEST_FILENAME} !index.php

RewriteCond意味着,仅当满足这些条件时,才会计算以下RewriteRule。 在您的例子中,用“如果请求的URI不是以/index.php开头的,那么请重新路由到index.php”


您需要该检查,因为否则您将在无限循环中将index.php重新路由到自身。

RewriteCond意味着,只有满足这些条件时,才会计算以下RewriteRule。 在您的例子中,用“如果请求的URI不是以/index.php开头的,那么请重新路由到index.php”


您需要进行检查,因为否则您将在无限循环中重新路由index.php到自身。

这是无限循环的一部分,我真的很困惑,我知道我将重写index.php到index.php一次,但我不明白为什么它会尝试第二次(或第三次或第四次…)这样做。我想我可能遗漏了一些重要的东西……它会对每个请求的重写规则进行评估。因此,在您的初始请求被发送到index.php之后,对index.php的请求也将被评估,再次,重新路由到index.php。。等等。为其他感兴趣的人找到更多关于递归的信息。。。这是无限循环的一部分,这让我很困惑,我知道我会将index.php重写为index.php一次,但我不明白为什么它会尝试第二次(或第三次或第四次…)这样做。我想我可能遗漏了一些重要的东西……它会对每个请求的重写规则进行评估。因此,在您的初始请求被发送到index.php之后,对index.php的请求也将被评估,再次,重新路由到index.php。。等等。为其他感兴趣的人找到更多关于递归的信息。。。