Apache 将特定文件夹视为实际文件夹,而不是控制器CodeIgniter

Apache 将特定文件夹视为实际文件夹,而不是控制器CodeIgniter,apache,.htaccess,codeigniter,mod-rewrite,Apache,.htaccess,Codeigniter,Mod Rewrite,我想将一个特定文件夹作为实际文件夹处理,而不是作为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_FILENA

我想将一个特定文件夹作为实际文件夹处理,而不是作为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>

重新启动发动机
1美元^(文件夹不包括在内)
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
#将非www重定向到www:
#重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
#重写规则^(.*)$http://www.%{HTTP_HOST}/$1[R=301,L]
#将所有其他URL重写为index.php/URL
重写规则^(.*)$index.php?url=$1[PT,L]
ErrorDocument 404 index.php
如果我取消注释这些行(将非www重定向到www),所有请求都将被视为控制器 因此,文件夹(要排除的文件夹)也被视为控制器。我想作为实际文件夹访问此文件夹

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


希望您能理解。

尝试在上次重写规则中添加一个
RewriteCond

RewriteCond $1 !^(folder_name/)
RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 
这将阻止它将www.yourdomain.com/folder_name重定向到index.php

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

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

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

此外,IMO定义此类例外的最简单方法是使用非重写规则,如:
RewriteRule^FOLDER\u to\u BE\u 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]