0

我正在尝试使用带有 codeigniter 的重写器来缩短我的网页 url。

我有我的.htaccess:

RewriteEngine on
RewriteBase /ci/
RewriteRule ^([0-9a-zA-Z_-]+)?$ index.php/controller/method/$1

但似乎我的应用程序忽略了所有。

我放:

http://localhost/ci/variable

并显示错误页面:

找不到对象错误 404。

LoadModule rewrite_module modules/mod_rewrite.so也不评论。

我已经在一个简单的项目中完成了它,并且似乎它有效,但不适用于我的 codeigniter。

有人可以帮我解决这个问题吗?

谢谢。

已解决:

Adding RewriteEngine on
RewriteRule ^([0-9a-zA-Z_-]+)?$ /ci/index.php/controller/method/$1 [L,R=301]
4

3 回答 3

1

除非您有一个使用名为Controller的方法命名的控制器,否则method此行将失败:

index.php/controller/method/$1

尝试这样的事情:

RewriteRule ^(.*)/index/?$ $1 [L,R=301]

请记住,CodeIgniter 处理请求的方式是将脚本名称 (index.php) 之后发生的所有内容/用作分隔符。然后它开始搜索基于该数组的控制器。既然我打赌你没有Controller控制器,也没有Controller_Method控制器,CodeIgniter 会立即向你吐舌头并拒绝合作。

于 2013-03-12T14:58:25.207 回答
0

确保将 htaccess 文件放在本地服务器的根文件夹中

IE。

如果 WAMP 把它放在 wamp/www/.htacess

或者如果 XAMPP 把它放在 xampp/htdocs/.htaccess

于 2013-03-12T14:53:54.260 回答
0

如果所有内容都在文件夹/ci中,即 .htaccess、index.php,那么您RewriteRule应该可以正常工作。

如果index.php在根目录中,则添加前导斜杠

RewriteRule ^([0-9a-zA-Z_-]+)?$ /index.php/controller/method/$1

如果.htaccess也在根目录中,请删除RewriteBaseci添加到您的RewriteRule

RewriteEngine on
RewriteRule ^ci/([0-9a-zA-Z_-]+)?$ /index.php/controller/method/$1

如果这些都不起作用,请准确指定每个文件的位置,即 .htaccess 在哪里,index.php 在哪里。

于 2013-03-12T15:47:37.327 回答