mod_rewrite和路由到代码点火器

时间:2014-01-08 16:41:39

标签: php apache .htaccess codeigniter mod-rewrite

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

该页面可在http:// localhost / test访问,但我想重写该URL以显示为http:// localhost / en-US / test。

问题是我不断获得代码点火器(CI)404。我可以确认mod_rewrite正在到达CI index.php,但CI无法提供正确的页面。这是设置示例:

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

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

RewriteEngine On
RewriteBase /
RewriteRule ^en-US/test/?$ test/index.php [NC,L]

根据我对mod_rewrite的理解,这应该允许URL http:// localhost / en-US / test来呈现位于http:// localhost / test的内容。但事实并非如此。我刚刚获得了404的CI版本。我需要帮助找出如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

嗯,你的问题让我安装CodeIgnoter并阅读其路由:)

无论如何,你的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';

在此之后,您可以打开此网址:http://domain.comen-US/test/以在/test/目录中加载CI主页。

答案 1 :(得分:0)

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

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

当你有Codeigniter时(大多数时候),你可以忘记htaccess。