Codeigniter htaccess rewriterules

时间:2013-03-12 14:50:12

标签: php .htaccess codeigniter mod-rewrite localhost

我正在尝试使用带有codeigniter的rewriterules缩短网页的网址。

我已经进入了我的.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]

3 个答案:

答案 0 :(得分:1)

除非您的控制器名为Controller且方法名为method,否则此行将失败:

index.php/controller/method/$1

尝试这样的事情:

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

请记住,CodeIgniter处理请求的方式是它使用/作为分隔符来分割脚本名称(index.php)之后发生的所有事情。然后它开始搜索基于该阵列的控制器。因为我打赌你没有Controller控制器,也没有Controller_Method控制器,所以CodeIgniter会立即向你伸出舌头并拒绝合作。

答案 1 :(得分:0)

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

即。

如果WAMP将其放入wamp / www / .htacess

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

答案 2 :(得分:0)

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

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

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

如果.htaccess也位于根目录中,请移除RewriteBase并将ci添加到您的RewriteRule

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

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