将文件夹重定向到另一个文件夹,避免使用其他.htaccess规则

时间:2014-07-07 10:46:17

标签: php apache .htaccess codeigniter mod-rewrite

我的网站的根文件夹包含现有网站。我已经开发了一个基于codeigniter的管理系统,我希望在/ editor文件夹中发布,但是我所做的所有mod_rewriting似乎都是徒劳的,如果有任何重写,它无法访问输入字符串或index.php文件出现。结构如下:

/
    /editor
        index.php
        .htaccess
    index.php
    .htaccess

这是我网站根目录下的当前.htaccess文件:

DirectoryIndex index.php

RewriteEngine On

RewriteRule  %{REQUEST_URI}^/?editor/(.*)$ (.*)/editor/$1 [R,L]

RewriteCond $1 ^$
RewriteRule ^(.*)$ ?p=homepage [L]

RewriteCond $1 !^(index\.php|editor|css|pdf|eshot|js|fonts|images)
RewriteRule ^(.*)$ index.php/?p=$1 [L]

修改

当前导航到/ editor子文件夹时,此当前规则显示根index.php文件,而它应显示/ editor文件夹中的index.php文件。

重新修改

它可能是/ editor子文件夹中的.htaccess文件,下面是代码:

DirectoryIndex index.php

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

1 个答案:

答案 0 :(得分:2)

好的,让我们一步一步地看一下。

首先让我们废弃这条规则,因为它在右侧使用了正则表达式,因此不合理:

RewriteRule  %{REQUEST_URI}^/?editor/(.*)$ (.*)/editor/$1 [R,L]

第二条规则可以简化为:

RewriteRule ^/?$ ?p=homepage [L]

第三条规则可以这样改写:

RewriteRule ^(?!(?:index\.php|editor|css|pdf|eshot|js|fonts|images))([^/.]+)/?$ index.php?p=$1 [L]

总结一下,在我看来,你可以像这样简化你的规则:

DirectoryIndex index.php
RewriteEngine On
RewriteRule ^/?$ ?p=homepage [L]
RewriteRule ^(?!(?:index\.php|editor|css|pdf|eshot|js|fonts|images))([^/.]+)/?$ index.php?p=$1 [L]