【问题标题】:CodeIgniter not routing on serverCodeIgniter 不在服务器上路由
【发布时间】:2016-05-30 09:57:34
【问题描述】:

这是我上传到在线服务器的第一个应用程序。我在 CodeIgniter 3.0.1 上创建了应用程序并将其上传到 000webhost.com 。但问题是,我的链接都没有被路由。我在网上查过,我的.htacess 文件似乎是正确的。我已经检查了这个问题My .htaccess file is not working,我和他有同样的问题,但是正确的答案没有用。

这是我的.htacess 文件

DirectoryIndex index.php

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|public|images|css|js|robots\.txt)

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

【问题讨论】:

  • 你的错误是什么?你想达到什么目标?
  • 您需要在根目录和css、js等子文件夹中创建一个名为“public”的文件夹。
  • 你能提供你得到的错误吗?是 500 错误还是别的什么?
  • @safin 我定义了一条路线: $route['club'] = 'controller/method' .. 但是当我尝试使用 websitename.com/club 访问这条路线时,它给了我一个 404 .
  • 显示404时的url是什么

标签: php .htaccess codeigniter routes web-hosting


【解决方案1】:

我和你有同样的问题。

检查.htaccess是否隐藏,如果隐藏尝试显示隐藏文件,瞧

【讨论】:

    【解决方案2】:
    1. 你能确定你已经创建了那个特定的“控制器”并且它是你试图路由到的“方法”吗?我的意思是你能从字面上验证他们的拼写吗?

    2. 您也可以尝试创建规则吗:

    $route['club'] = 'welcome/index';

    你能看看上面的规则是否有效吗?你有任何其他名为“club.php”的控制器吗?

    【讨论】:

    • 是的。在我的本地服务器上一切正常。它只是在虚拟主机上不起作用
    • 1.你有你的 $config['base_url'] 设置吗?如果它是空白的,您可以将其设置为您的基本网址并查看吗? 2. 创建任何其他路线是否有效?例如:$route['abc'] = 'welcome/index'; 这样的东西有用吗?
    • 1.是的,设置如下: $config['base_url'] = 'sigede.comli.com'; 2.不,创建其他路由根本不起作用。
    • 暂时删除 htaccess 文件然后查看它是否加载了这些路由会有帮助吗?
    • 我确实删除了 htaccess,但它没有加载。
    【解决方案3】:

    我需要注册 000webhost 并检查子域结构以解决该问题。正如我所怀疑的,它为子域创建了一个文件夹。因此,您的 .htaccess 文件无法正常工作。您需要将子文件夹指向 rewritebase:

    DirectoryIndex index.php
    
    RewriteEngine on
    RewriteBase /sigede/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|public|images|css|js|robots\.txt)
    
    RewriteRule ^(.*)$ index.php?/$1 [L]
    

    【讨论】:

      【解决方案4】:

      为了确保错误的部分是.htaccess文件,您需要在路径上使用index.php访问您的网站。

      例如,您需要访问http://example.com/index.php/book 而不是http://example.com/book

      如果第一个网址可以访问,那么很可能你的.htaccess不正确。

      我通常在我的 CodeIgniter 项目中发布此 .htaccess

      <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php?/$1 [L]
      </IfModule>
      
      <IfModule !mod_rewrite.c>
        ErrorDocument 404 /index.php
      </IfModule>
      

      最后,请确保您的 rewrite mod 在您的 Apache 服务器中激活(如果您使用共享主机,请联系您的主机提供商)。

      要激活它,请运行以下命令:

      sudo a2enmod rewrite
      

      然后,重启服务:

      sudo service apache2 restart
      

      希望对你有帮助。

      【讨论】:

        【解决方案5】:

        既然您提到了 404 错误。你能确保所有的项目文件夹都有适当的执行权限吗?

        将项目文件夹及其所有子文件夹的权限设置为0755。

        那就试试吧。

        【讨论】:

          【解决方案6】:

          试试这个并告诉我们它是否有效:

          <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteBase /
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule ^(.*)$ index.php?/$1 [L]
          </IfModule>
          



          p.s.我希望您的文件是“.htaccess”(不是 .htacess)

          如果仍然无法正常工作,请尝试编辑index.php 文件,在其顶部添加以下内容:

          <?php
          
          echo $_SERVER['REQUEST_URI'];
          die;
          

          这必须向您表明 htaccess 正确地重写了 index.php 文件。
          如果仍然无法正常工作,请联系托管支持。

          顺便说一句,这个 sn-p 取自这里,非常感谢:https://gist.github.com/philipptempel/4226750

          【讨论】:

          • 我试过那个 .htaccess 但没有用。回声 $_SERVER['REQUEST_URI'];返回 -> \
          • @RosárioPereiraFernandes 在所有情况下?您是否尝试在浏览器中打开:yoursite.com/something
          猜你喜欢
          • 1970-01-01
          • 2013-06-08
          • 2014-06-08
          • 1970-01-01
          • 2017-12-20
          • 2013-02-28
          • 2019-04-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多