我正在尝试使用带有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]
答案 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。