【发布时间】:2014-03-07 10:52:31
【问题描述】:
我寻找答案,很惊讶我找不到这个具体情况:
我在http://www.mysites.com/site1/ 有一个现有的“直接”PHP 站点,并希望随着时间的推移将其迁移到 CodeIgniter。我知道有几种方法可以做到这一点,但我想不理会现有站点,只需将 CodeIgniter 文件夹 (CI) 放在根目录 (site1) 中,然后在文件或目录不存在时将请求重定向到它'不存在。
所以这个 .htaccess 文件在 site1 文件夹中:
RewriteEngine on
RewriteBase /site1/CI/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt|assets)
RewriteRule ^(.*)$ index.php/$1 [L]
这个 .htaccess 文件位于 site1/CI 文件夹中(需要吗?):
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt|assets)
RewriteRule ^(.*)$ index.php/$1 [L]
CodeIgniter config.php 文件包含:
$config['base_url'] = 'http://www.mysites.com/site1/CI/';
如果我尝试转到现有站点上的某个位置(例如,http://www.mysites.com/site1/page.php),这可以正常工作,但如果我尝试转到应该路由到 CodeIgniter 的页面(例如,http://www.mysites.com/site1/home),我从 CodeIgniter 获得 404 错误。它似乎在控制器“site1”而不是控制器“home”中寻找方法“home”。
然后我在根目录中尝试了这个 .htaccess 文件,以摆脱传递给 index.php 的“site1”:
RewriteBase /site1/CI/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt|assets)
RewriteRule /site1/(?:(.*)) index.php/$1 [L]
不幸的是,这导致 Apache 返回 404。
有什么想法吗?谢谢!
【问题讨论】:
标签: .htaccess codeigniter migrate