大家好,你们可以帮我看看如何使用多个应用程序在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]
答案 0 :(得分:2)
请尝试以下步骤:
在config => config.php中,替换如下。
$config['index_page'] = 'index.php';
到
$config['index_page'] = '';
请将以下代码放入.htaccess文件中,这可能有助于您实现结果。
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 扩展名