gpt4 book ai didi

codeigniter - GET 参数的 Code Igniter 重定向问题

转载 作者:行者123 更新时间:2023-12-02 15:29:34 25 4
gpt4 key购买 nike

我在代码点火器路由方面遇到困难。

http://www.mysite.com转到正确的 Controller 并做正确的事情。然而,http://www.mysite.com/?ref=p&t2=455导致 404 错误。另外http://www.mysite.com/mycontroller/mymethod/?ref=p&t2=455工作正常。

我更改了 config.php 文件中的 uri_protocol 并尝试了不同的值。自动似乎效果最好。

我的理论是代码点火器正在使用查询参数来进行路由。问题是这些查询参数与路由无关。

如何告诉代码点火器忽略默认 Controller 的查询参数?

请注意,我按照在线说明从 URL 中删除了 index.php。我不认为它会造成问题,但这是我的 .htaccess 文件以防万一:

RewriteEngine On
RewriteBase /~trifecta/prod/

#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#This last condition enables access to the images and css folders, and the robots.txt file
#Submitted by Michael Radlmaier (mradlmaier)
RewriteCond $1 !^(index\.php|images|robots\.txt|css)
RewriteRule ^(.*)$ index.php?/$1 [L]

最佳答案

使用该重写规则 RewriteRule ^(.*)$/index.php?/$1,以下是正在发生的重写的一些示例:

http://www.mysite.com =>
http://www.mysite.com/index.php?/(实际上,这可能根本没有被重写)

http://www.mysite.com/mycontroller/mymethod/?ref=p&t2=455 =>
http://www.mysite.com/index.php?/mycontroller/mymethod/?ref=p&t2=455

http://www.mysite.com/?ref=p&ts=455 =>
http://www.mysite.com/index.php?/?ref=p&t2=455

无论是否重写,第一个都可以工作。 CodeIgniter 正在处理一个空查询字符串(这很容易)或一个简单的“/”查询字符串。

第二个(也有效)正在被重写,但 CodeIgniter 能够处理其查询字符串,即 /mycontroller/mymethod/?ref=p&t2=455。 CI 将其转换为段数组,如下所示

[0] => mycontroller
[1] => mymethod
[2] => ?ref=p&t2=455

数组索引 2 最终会被你所做的任何事情忽略。

第三个(不起作用正在被重写,CodeIgniter根本无法处理其查询字符串。其查询字符串被重写为:/?ref=p&t2= 455。这构成了一个如下所示的段数组:

[0] => ?ref=p&t2=455

与您网站上的任何 Controller 都不匹配。

也许,您可以通过修改
中的 RewriteRule 来解决整个问题RewriteRule ^(.*)$/index.php?/$1
RewriteRule ^(.*)$/index.php/$1
此时您可能希望将 uri_protocol 配置更改回 PATH_INFO

关于codeigniter - GET 参数的 Code Igniter 重定向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3315117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com