0

我知道如何index.php从 CI url 中整体删除。以下工作正常:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /crm/v2/index.php?/$1 [L]

但是,它会干扰实时站点上的其他代码。我添加的这个新 CI 版本位于名为v2. 因此布局类似于:

-originalDir
  --v2
-otherDirs
-.htaccess
-etc...

因此,本质上,url 会出现如下内容:

// Original page
https://www.site.com/originalDir/somepage.htm
// And this exist too
https://www.site.com/originalDir/index.php

// My new stuff
https://www.site.com/originalDir/v2/index.php/controller/etc...
// Desired effect withOUT affecting the original sites index.php page
//     aka, the below is what i WANT but NOT getting!
https://www.site.com/originalDir/v2/controller/etc...

我可以用很多语言编写代码,但对这些 htaccess 重写没有太多经验。关于如何使其仅为 codeigniter 子目录重写 index.php 的任何想法?我尝试了一些似乎在本地工作的东西,但在实时服务器上却不行。不确定重写代码的确切结构。

4

2 回答 2

1

您是否尝试过使用 RewriteBase?

RewriteEngine On
RewriteBase /crm/v2
RewriteRule ^(.+)$ index.php?/$1 [L]

我没有根据您的信息专门对此进行测试,但这是来自我用于某些项目的模板。

这是 RewriteBase 的文档:http ://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase

我希望这有帮助!

于 2013-04-03T17:10:01.223 回答
1

假设您只想重写 CI 目录中的规则,而不是将该目录之外的任何 URL 指向它......

将您更改RewriteRule为仅匹配以 CI 目录开头的 URI。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^crm/v2/(.*)$ /crm/v2/index.php?/$1 [L]

或者,您可以在/crm/v2目录中放置一个 .htaccess 文件,并指定一个.htaccess 文件RewriteBase

RewriteEngine on
RewriteBase /crm/v2/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
于 2013-04-03T17:10:13.137 回答