Codeigniter htaccess适用于多种应用

时间:2016-03-07 03:06:25

标签: .htaccess codeigniter

大家好,你们可以帮我看看如何使用多个应用程序在codeigniter中设置正确的URL,并且我是正确的.htaccess

文件夹结构

-application
 -api
 -cms
-system
-api.php
-cms.php

使用此功能时

http://localhost/kitkat_funs/cms.php/
http://localhost/kitkat_funs/api.php/

但我想要这个

http://localhost/kitkat_funs/cms/
http://localhost/kitkat_funs/api/

我的htaccess

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

2 个答案:

答案 0 :(得分:2)

请尝试以下步骤:
在config => config.php中,替换如下。

$config['index_page'] = 'index.php';

$config['index_page'] = '';

请将以下代码放入.htaccess文件中,这可能有助于您实现结果。

将您的项目文件夹名称写为rewritebase

RewriteBase /yourprojname/    

RewriteEngine On    
RewriteCond %{REQUEST_URI} ^/system.*    
RewriteRule ^(.*) index.php?/$1 [L]    
RewriteCond %{REQUEST_FILENAME} !-f    
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteRule ^(.+) index.php?/$1 [L]    

*备份.htaccess文件。

答案 1 :(得分:0)

当您使用多个应用程序(和多个 index_appname.php)使用 Codeigniter 时会出现此问题。当然您可以在每次添加另一个应用程序时在 .htaccess 中添加新行,但这并不方便。

解决方案是使用基本的正则表达式。需要写2个section,一个是地址不带斜杠,一个是index文件后面多一个斜杠

注意:在这种情况下,index.php 文件的前缀为“index_”,后跟应用名称

# If the user types without trailing slash example www.host.com/kitkat_funs/appname
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\w*)$ index_$1\.php [L,QSA]

# If the user enter in any system section with slash example www.host.com/kitkat_funs/appname/page/etc
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\/(.*)$ index_$2\.php/$1 [L,QSA]

每次用户在域名后输入地址,例如www.host.com/kitkatname/cms

.htaccess 会自动重定向到 www.host.com/kitkatname/cms.php

现在您可以去掉索引文件上的 .php 扩展名