【问题标题】:codeigniter rewriting of URLS not workingURLS的codeigniter重写不起作用
【发布时间】:2015-09-06 13:24:14
【问题描述】:

过去,我完全没有问题,但由于某种原因,在我的新服务器上我无法让它工作。

我的应用程序根目录中有以下 .htaccess 文件

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

我还启用了 mod_rewrite 并通过 php_info() 确认了这一点

我的网站位于 /var/www/html/test

是否有可能虽然启用了 mod_rewrite 但它不起作用,如果是这样,我该如何测试它?

【问题讨论】:

    标签: php apache .htaccess codeigniter mod-rewrite


    【解决方案1】:

    在某些服务器实现中,您需要将其包装在 <IfModule> 标记中。

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

    同时检查您的 httpd.conf 文件以确保它具有:

    Options FollowSymLinks
    AllowOverride All
    

    还值得检查以确保 .htaccess 文件没有被另一个 .htaccess 文件覆盖。

    测试 .htaccess 是否正常工作的简单方法

    只需将以下内容放入您的 .htaccess 文件中:

    deny from All
    

    这样做是拒绝所有人访问您的网站。如果您在尝试访问该站点时遇到 403 禁止 - 包含 .htaccess 文件。如果没有 - 见上文。

    【讨论】:

      【解决方案2】:

      我在我的 codeigniter 设置中使用它

      RewriteEngine on
      # prevent these directories from hitting CI
      RewriteCond $1 !^(index\.php|images|assets|robots\.txt|crossdomain\.xml)
      # route everything else to the index.php
      RewriteRule ^/(.*)$ /index.php/$1 [QSA]
      

      (我的设置是在 .conf 的虚拟主机中完成的,而不是在 .htaccess 中,尽管它们通常具有相同的配置)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-05
        • 2015-11-20
        • 1970-01-01
        • 1970-01-01
        • 2016-01-02
        • 2014-01-09
        相关资源
        最近更新 更多