Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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_重写并路由到代码点火器_Php_Apache_.htaccess_Codeigniter_Mod Rewrite - Fatal编程技术网

Php mod_重写并路由到代码点火器

Php mod_重写并路由到代码点火器,php,apache,.htaccess,codeigniter,mod-rewrite,Php,Apache,.htaccess,Codeigniter,Mod Rewrite,我一直使用CodeIgniter作为站点的子目录,并且在一台服务器上有几个if实例。每个实例都被视为一个单独的应用程序,但都在同一域名下。我希望启用一个稍微不同的URL结构,但我已经转向mod_rewrite来帮助我 可在以下位置访问该页面:http://localhost/test 但我想重写该URL,使其显示为http://localhost/en-US/test. 问题是我一直得到一个代码点火器(CI)404。我可以确认mod_重写正在到达CI index.php,但CI未能提供正确的页面

我一直使用CodeIgniter作为站点的子目录,并且在一台服务器上有几个if实例。每个实例都被视为一个单独的应用程序,但都在同一域名下。我希望启用一个稍微不同的URL结构,但我已经转向mod_rewrite来帮助我

可在以下位置访问该页面:http://localhost/test 但我想重写该URL,使其显示为http://localhost/en-US/test.

问题是我一直得到一个代码点火器(CI)404。我可以确认mod_重写正在到达CI index.php,但CI未能提供正确的页面。以下是示例和设置:

1) 并将其放置在站点根目录的子目录中。将CI文件夹命名为“test”。现在应该可以在位于的本地服务器上访问它http://localhost/test 您应该会看到默认的欢迎视图

2) 在服务器的根web目录中创建.htaccess文件。不要将其放在CI“test”目录中。添加以下行

RewriteEngine On
RewriteBase /
RewriteRule ^en-US/test/?$ test/index.php [NC,L]
根据我对mod_rewrite的理解,这应该允许URLhttp://localhost/en-US/test 渲染位于http://localhost/test. 但事实并非如此。我刚得到404的CI版本。我需要帮助来解决这个问题。

你应该去看看。将此语句放在保留路由之后的config/routes.php文件中

$route['test'] = "en-US/test";

当您有Codeigniter时,您可以忘记htaccess(大多数情况下)。

Hmm您的问题让我安装了Codeigniter并阅读了它的路由:)

无论如何,您的
DocumentRoot/.htaccess
如下所示:

RewriteEngine On
RewriteBase /
RewriteRule ^en-US/(test)/(.*)$ $1/$2 [NC,L]
然后在/test/application/config/config.php`中替换这一行:

$config['uri_protocol'] = 'PATH_INFO';
默认设置为:

$config['uri_protocol'] = 'AUTO';

在此之后,您可以打开此URL:
http://domain.comen-US/test/
若要在
/test/
目录中加载CI主页,请尝试:
重写规则^en US/test/?$/test/index.php[NC,L,R]
,该操作可以正常工作,但它会更改URL。这只是一个重定向,我需要保持新的URL不变。我只知道为了测试其他配置问题,我想知道重定向规则是否真的对你有效?当然。它已在相应页面上解决。确定在下面提供了一个答案。这不起作用,因为它需要在URL到达CI之前影响URL。服务器上有多个CI实例。如果CI是服务器上唯一的东西,并且它可以自己处理路由,那么这可能会起作用。这就成功了!谢谢路径信息似乎是决定因素。我甚至尝试了最初的重写规则,它也起了作用。再次感谢你的帮助。不客气,很高兴事情解决了。感谢您强迫我安装CI:)