【问题标题】:Treat particular folder as actual folder not as controller CodeIgniter将特定文件夹视为实际文件夹而不是控制器 CodeIgniter
【发布时间】:2013-10-02 06:03:36
【问题描述】:

我想让一个特定的文件夹被视为一个实际的文件夹,而不是作为 codeigniter 中的控制器,并且还想将我的所有 domain.com 请求重定向到 www.domain.com。我有以下 htaccess 代码:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond $1 !^(FOLDER_TO_BE_EXCLUDED)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Redirect non-www to www:
#RewriteCond %{HTTP_HOST} !^www\. [NC]
#RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 

</IfModule>
<IfModule !mod_rewrite.c>
    ErrorDocument 404 index.php
</IfModule>

如果我取消注释这些行(将非 www 重定向到 www),所有请求都被视为控制器 所以文件夹(FOLDER_TO_BE_EXCLUDED)也被视为控制器。我想访问这个文件夹作为一个实际的。

如果我不将非 www 重定向到 www,我将无法访问内页上的会话变量。

希望你能理解。

【问题讨论】:

    标签: apache .htaccess codeigniter mod-rewrite


    【解决方案1】:

    RewriteCond 仅适用于以下 RewriteRule:您的规则(现在已注释)不正确。

    此外,IMO 定义此类异常的最简单方法是使用非重写规则,例如:RewriteRule ^FOLDER_TO_BE_EXCLUDED/ - [L](在重写规则的“顶部”)

    RewriteEngine On
    
    # Redirect non-www to www:
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule .* http://www.%{HTTP_HOST}/$0 [R=permanent,L]
    
    RewriteRule ^FOLDER_TO_BE_EXCLUDED/ - [L]
    
    # Rewrite all other URLs to index.php/URL
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php?url=$0 [PT,L] 
    

    【讨论】:

      【解决方案2】:

      尝试将RewriteCond 添加到您的最后一个 RewriteRule:

      RewriteCond $1 !^(folder_name/)
      RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 
      

      这应该会阻止它将 www.yourdomain.com/folder_name 重定向到 index.php。

      您可以使用| 字符向条件中添加更多文件夹:

      RewriteCond $1 !^(folder_name/|another_folder/)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-23
        • 2016-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-16
        • 2012-06-24
        相关资源
        最近更新 更多