0

我有一个有趣的问题,我似乎无法解决。我们有一个 URL,该 URL 已设置为将该 URL 的所有请求(通过另一台服务器上的 nginx)路由到我的 Codeigniter 应用程序(存在于另一台服务器上)。例如,URL 是这样的:

http://www.site.com/myappname/controller/function/parameter

在 Codeigniter 中的正常情况下,它将尾部正斜杠之后的第一个元素路由到控制器类,然后将第二个元素路由到类中的函数,第三个/等作为该函数的参数。

我需要它做的是忽略 URL 中的“myappname”并让它通过 URL 发送而不发送。“myappname”不是服务器上的文件夹。

我不是 100% 确定是否需要添加新的 HTACCESS 规则,或者是否可以通过 Codeigniter 以编程方式执行此操作。

我当前的 HTACCESS 文件:

RewriteEngine on

RewriteCond $1 !^(index\.php|sitemap\.xml|robots\.txt|public|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]

这是所有 Codeigniter 应用程序的基本且直接的 HTACCESS 设置,但是,使用此设置并使用上面的结构,如果我去http://www.site.com/myappname,带有“http://www .site.com/myappname”在 Codeigniter 配置中设置为我的 base_url,然后 Codeigniter 将其翻译为:

http://www.site.com/myappname/myappname

所以……有人可以帮忙吗?我还尝试将以下代码添加到我的 config/routes.php 文件的顶部:

$_SERVER['REQUEST_URI'] = str_ireplace('/verified', '', $_SERVER['REQUEST_URI']);

这实际上是部分工作的,但是现在当我从根目录请求 CSS/JS 文件时,它并没有正确地拉入这些文件,因为我使用内置的 site_url() 函数来构建基于站点的“base_url”属性的动态链接。我不认为我可以在 Codeigniter 中以编程方式 100% 执行此操作(通过覆盖系统级函数),因为我的 CSS/JS/etc 存在于我的应用程序根目录的 /public 文件夹中(这显然不包括通过我的 RewriteCond 路由) .

有人有建议吗?

4

1 回答 1

0

尝试添加RewriteBase到您的htaccess

RewriteEngine On
RewriteBase /myappname/
RewriteCond $1 !^(index\.php|sitemap\.xml|robots\.txt|public|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
于 2013-01-16T18:04:28.993 回答