0

我有一个基于 Codeigniter 的系统,其中包含两个应用程序appsite,它们共享一个系统文件夹。前者有后端,后者有前端。因此,index.php 默认为站点,并且有一个单独app.php的访问后端。

http://localhost/subdirectory/去前端,而要访问我必须写的后端http://localhost/subdirectory/app.php

我已经参考了关于如何删除index.php的用户指南,它适用于前端。说,http://localhost/subdirectory/pages/about成功进入站点文件夹的pages类,参数为about

问题是当我尝试访问登录页面时,URI 指向http://localhost/subdirectory/app.php/auth/login. 输入http://localhost/subdirectory/app/auth/login返回 403 Forbidden 页面,该页面我假设是文件夹上的index.html 更新:发现这是由于app上存在 .htaccess 。

如何删除app.php部分?

这是我的应用程序结构:

app
| - cache, config, controllers, views, and other related CI folders
site
| - cache, config, etc, like app
system
| - CI's system folder
app.php
index.php
.htaccess

这是我当前的.htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(app)/(.*)$ app.php/$1 [NC,L]
RewriteRule ^(.*)$ index.php/$1 [NC,L]

那是行不通的。

有什么帮助吗?谢谢!

更新: 403 禁止显示是由 .htaccess 引起的,内容为“全部拒绝”,不仅仅是因为index.html。我不知道这是否有帮助。

4

4 回答 4

1

仔细看看你的.htaccess

RewriteRule ^(app)/(.*)$ app.php/$1 [NC,L]

在此规则中,$1将指向"app"字符串,而不是正斜杠之后的部分。

如下更改该行,并让我知道会发生什么:

RewriteRule ^app/(.*)$ app.php/$1 [NC,L]

更新:
这是一个文件示例.htaccess,根据CI Docs,我没有尝试过,请告诉我它是如何工作的:

RewriteEngine on

RewriteCond $1 !^(index\.php|app\.php|public|app)
RewriteRule ^(.*)$ index.php/$1 [NC,L]

RewriteCond $1 ^app/?
RewriteRule ^(.*)$ app.php/$1 [NC,L]
于 2013-05-05T22:00:28.777 回答
0

当我在做一个带有管理面板和前端区域的网站时,我遇到了这个问题。尝试使用标准删除 index.php 方法并改用 codeigniter 的 routes 功能。

http://ellislab.com/codeigniter/user-guide/general/routing.html

祝你好运!

于 2013-05-05T08:28:51.227 回答
0

您可以路由到应用程序 | 以其他方式网站

//index.php
if(preg_match('/^app/ui', $_SERVER['REQUEST_URI'])) {
     require_onse "app.php";
} else {
     require_onse "site.php"
}
于 2013-05-05T20:03:48.253 回答
0

好的,通过重组我的架构来解决这个问题。

这里是:

app
| - (application name for backend) folder
| -- models, config, controllers, etc. folders
| - index.php for backend
site
| - models, config, controllers, etc.
system
| - CI system folder
index.php for the frontend (which is on 'site')

事实证明,看起来我们不需要使用 .htaccess 进行凌乱的手臂摔跤来使其工作。这只是让我自己看起来很愚蠢。

谢谢你们每一个人的帮助!

于 2013-05-07T13:10:42.157 回答