【问题标题】:codeigniter .htaccess work but cant find controllercodeigniter .htaccess 工作但找不到控制器
【发布时间】:2016-12-27 14:53:54
【问题描述】:

我正在使用 CI 3.1.0 版

在我的 httacces 文件中像这样

RewriteEngine on
RewriteCond $1 !^(index\.php|public|\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1

我已将我的配置文件更改为$config['index_page'] = ''

我可以工作,但 CI 似乎无法找到从 url 请求的控制器。 例如localhost/site/index.php/welcome 它按预期工作,但是当使用localhost/site/welcome 请求它时,我找不到 404 页面。

【问题讨论】:

  • 我找到了这个,可以帮助gist.github.com/philipptempel/4226750
  • 不工作...它给我错误找不到对象...
  • 请注意:您的“httacces”文件的名称应该拼写为htaccess...这很重要。
  • @sparky 抱歉,这只是一个错字...但我的 htaccess 文件实际上是 .htacccess
  • 你能给我们完整的虚拟主机配置文件吗?

标签: php codeigniter


【解决方案1】:

你能不能把最后一行换成

RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

这有点取决于托管,我也注意到了,所以这可能行不通。是否启用了 mod_rewrite 或等效功能?

如果您的应用程序在目录 /site/ 中运行,您在 $config['base_url'] 中放入了什么?

【讨论】:

  • $config['base_url']='' 而我的网站只是在本地主机上运行。我以前的 ci 的另一个项目可以在该 mod 上运行良好。我不明白到底发生了什么
  • 它是在本地主机上运行还是在本地主机/站点上运行?也许试试$protocol = ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ) ? 'https://' : 'http://'; $config['base_url'] = $protocol . $_SERVER['HTTP_HOST'] . str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);
【解决方案2】:

我正在使用这个:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

【讨论】:

  • 无...它们都不起作用。我只是在 htaccess 文件夹中尝试所有组合。最好离开他们,并使用最新的 codeigniter 开始新项目......而且中提琴它的工作......
【解决方案3】:

如果你已经遵循这个:tutorial,你需要在你的应用所在的路径中将AllowOverride指令设置为all。这是必要的,因为您使用的是 .htaccess 文件。 More.

当此指令设置为 None 并且 AllowOverrideList 设置为 无,.htaccess 文件被完全忽略。在这种情况下,服务器 甚至不会尝试读取文件系统中的 .htaccess 文件。

记住:

如果您有权访问,则应完全避免使用 .htaccess 文件 到 httpd 主服务器配置文件。使用 .htaccess 文件会减慢速度 你的 Apache http 服务器。您可以包含在 .htaccess 文件最好设置在目录块中,因为它将具有 效果相同,性能更好。

这是一个开发者推荐:Here is

【讨论】:

    猜你喜欢
    • 2015-02-08
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2022-08-13
    • 2016-03-01
    • 2012-04-29
    相关资源
    最近更新 更多