我的网站的根文件夹包含现有网站。我已经开发了一个基于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]
答案 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]