.htaccess在子文件夹中

时间:2011-05-11 18:02:28

标签: php .htaccess codeigniter

主站点使用.htaccess运行WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

我要在子目录site.com/online/中创建一个CodeIgniter应用程序 如果只是在子文件夹中添加CI .hta文件,它将无法正常工作。 CI .htaccess:

RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt|img|styles|js)
RewriteRule ^(.*)$ /index.php?/$1 [L]

是否可以组合两个.htaccess文件或在CI子文件夹中使用.htaccess执行某些操作? 谢谢。

UPD。 感谢您的回答,我尝试了所有变种,并最终将项目移至子域。

3 个答案:

答案 0 :(得分:3)

首先,你的.htaccess应该是这样的:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} !^GET\s/+online/ [NC]
RewriteRule . /index.php [L]
</IfModule>

#Then add this for CI handling in the same .htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !index\.php [NC]
RewriteRule ^online/(.*)$ online/index.php?/$1 [L,NC]

然后您可以在online子文件夹中删除(或重命名).htaccess。

答案 1 :(得分:1)

尝试使用codeigniter .htaccess:

RewriteEngine on
RewriteBase /online
RewriteCond $1 !^(index\.php|robots\.txt|img|styles|js)
RewriteRule ^(.*)$ /index.php?/$1 [L]

否则对该子文件夹的所有请求都将被重定向到wordpress。

答案 2 :(得分:1)

您是否设置了AllowOverride?根据{{​​3}},您需要允许FileInfo替换mod_rewrite。