【问题标题】:htaccess not redirecting in codeigniterhtaccess没有在codeigniter中重定向
【发布时间】:2014-03-13 18:03:55
【问题描述】:

我是 php 和 codeigniter 的新手。我正在开发一个在服务器上运行的项目 abcd.com我正在使用这样的 htaccess 代码

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

现在我的项目已移至另一台服务器192.000.000.000.我可以访问登录页面,当用户登录时会话正在设置并重定向到192.000.000.000/myproject/user,这里我收到 404 错误

我在config.php中设置过base_url是这样的

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://".$_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']); 

$config['index_page'] = '';

我的 WINSCP 项目结构

old one :  /home/my_org/public_html/prjFolder
new one :  /var/www/html/prjFolder

我的 .htaccess 文件是这样的

system/
application/
user_guide/
index.php
.htaccess

如果有人找到解决方案,请帮助我..

【问题讨论】:

    标签: php .htaccess codeigniter


    【解决方案1】:

    您提到您的项目已移至另一台服务器。您是否检查过您的虚拟主机中是否设置了 AllowOverride 指令(假设您使用 Apache 作为 Web 服务器)?如果禁用此选项,Apache 将简单地忽略您的 .htaccess 文件。一个快速测试是在您的 .htaccess 文件中添加一些废话,这肯定会产生错误。如果您没有收到服务器错误,则您的 .htaccess 文件将被忽略。

    链接:http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride

    另一个原因可能是 mod_rewrite 模块未启用(再次假设您使用的是 Apache)。您没有说粘贴的 .htaccess 代码是否是完整的 .htaccess 文件,所以我不知道它是否正在检查该模块是否存在。一个简单的测试来检查这是否是原因,正在尝试重写的结果 url:192.000.000.000/index.php/myproject/user

    链接:http://httpd.apache.org/docs/current/mod/mod_rewrite.html

    我假设您的 .htaccess 文件中没有任何错误,因为您似乎说它在移动之前运行良好。

    【讨论】:

      【解决方案2】:

      我认为你的重写规则指向的目的地有问题

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

      如果您通过 URL 访问您的项目

      192.000.000.000/myproject/user
      

      重写规则会将其更改为

      192.000.000.000/index.php/myproject/user
      

      您需要修改您的重写规则以从要传递给 index.php 的 url 中排除 myproject/user 或者您可以删除 .htaccess 如果这只是一台开发机器,我们隐藏 index.php 的原因是为了让 url 看起来更漂亮。在开发环境中使用它根本不会受到伤害。

      【讨论】:

        【解决方案3】:

        我找到了解决办法,是apache rewrite_module的问题。我更改了我的 httpd.conf 文件,现在它可以正常工作了。

        AllowOverride None 更改为AllowOverride All

        <Directory "/var/www/html">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
        </Directory>
        

        并使用 putty # service httpd restart 重新启动 Apache 守护进程

        参考网址:-http://dev.antoinesolutions.com/apache-server/mod_rewrite

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-20
          • 1970-01-01
          • 2013-05-01
          • 1970-01-01
          • 2018-02-15
          • 1970-01-01
          • 2021-02-26
          相关资源
          最近更新 更多