【问题标题】:Codeigniter htaccess rewriterulesCodeigniter htaccess 重写器
【发布时间】:2013-03-12 14:50:12
【问题描述】:

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

【问题讨论】:

  • 那是你的真实代码吗? /controller/method/ 不应该那样。它的 /*nameOfYourController*/*nameOfYourMethod*/
  • RewriteBase 上的 RewriteEngine /ci/ RewriteRule ^([0-9a-zA-Z_-]+)?$ index.php/anunciants/mostra/$1 这是我的真实代码。

标签: php .htaccess codeigniter mod-rewrite localhost


【解决方案1】:

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

index.php/controller/method/$1

试试这样的:

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

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

【讨论】:

  • 我刚刚设置了函数的完整路径,但效果不太好。 RewriteEngine on RewriteRule ^([0-9a-zA-Z_-]+)?$ /ci/index.php/anunciants/mostra/$1 如果我把它转到:RewriteRule ^([0-9a-zA-Z_ -]+)?$ /test/ 它正在工作。
  • 如果您导航到该 URL 会发生什么?
  • 如果我去:localhost/ci/index.php/anunciants/mostra/asdf 当我输入时它会显示 asdf 页面:localhost/ci/asdf 它会出现 404 错误页面。
  • 错误是没有放置 [L,R=301] 代码。非常感谢。
【解决方案2】:

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

即。

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

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

【讨论】:

  • 我将文件从 htdocs/ci/application 移动到 htdocs/ci,它现在似乎运行了,但也收到错误消息。 404 Page Not Found 找不到您请求的页面。这是默认的 CI 404 错误。
【解决方案3】:

如果所有内容都在文件夹 /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 在哪里。

【讨论】:

  • 文件:我有这棵树:-htdocs -- ci ---- application ------.htaccess(默认) ------ 控制器和视图(所有codeigniter系统)---- index.php ----.htaccess(我在这里移动了第一个原因被忽略了)--测试(另一个项目)
猜你喜欢
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-03
相关资源
最近更新 更多