CodeIgniter应用程序的结构
www.domain.com-/资产-/系统
- /门户(应用程序1)
- /成员(应用程序2)
- /管理员(应用程序3)
- /产品(应用程序4)
portal.php ( portal application index page ) members.php ( members application index page ) admin.php ( admin application index page ) products.php ( products application index page )
索引(工作)的URL
http://www.domain.com/portal.php<--------工作
http://www.domain.com/members.php<--------工作
http://www.domain.com/admin.php<--------工作
http://www.domain.com/products.php<--------工作
路线
成员routes.php
$route['mem/display_list'] = "members/get_list";
门户路由.php
$route['por/display_list'] = "portal/get_list";
admin routes.php
$route['adm/display_list'] = "admin/get_list";
products routes.php
$route['prd/display_list'] = "products/get_list";
带有控制器的URL
http://www.domain.com/portal.php/portal/get_list<-----工作
http://www.domain.com/admin.php/admin/get_list<-----工作
http://www.domain.com/members.php/members/get_list<-----工作
http://www.domain.com/products.php/products/get_list<-----工作
问题:如何使其适用于路线
http://www.domain.com/mem/display_list<-----不工作
http://www.domain.com/por/display_list<-----不工作
http://www.domain.com/adm/display_list<-----不工作
http://www.domain.com/prd/display_list<-----不工作
是关于在.htaccess文件中配置多个index.php吗?
CodeIgniter始终使用index.php(在您的情况下:portal.php、members.php、admin.php、products.php)。您必须将每个请求定向到正确的.php文件。
因此,解决方案是在.htaccess文件中为每个重写规则添加RewriteRules。
我还没有测试过它,但我想这样的东西会起作用:
RewriteRule ^mem/(.*)$ members.php/$1 [L]
当然,对于所有其他人来说:
RewriteRule ^por/(.*)$ portal.php/$1 [L]
RewriteRule ^adm/(.*)$ admin.php/$1 [L]
RewriteRule ^prd/(.*)$ products.php/$1 [L]
我们也面临着与index.php相同的问题,因此我们有这样的解决方案:你可以像一样使用.htaccess文件
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
我们有index.php,所以你可以使用你的filename.php并跳过url中的这个文件名,这样你的url就可以很好地满足你的要求。
我看到的唯一可能的答案是拥有多个.htaccess
文件。一个在根上,一个用于每个单独的应用程序。这样你就可以让mod_rewrite
为你工作。
此文件结构(多应用程序):
- application
- admin
- site
- system
- index.php
- admin.php
如果您希望/admin重写为admin.php,那么您的重写规则是错误的,使用当前规则,它将导致/index.php/admin.
你没有提到这是否是问题所在,如果是这样做:
RewriteRule ^/admin$ admin.php [L,QSA]
RewriteRule ^(.*) index.php/$1 [L,QSA]
您还可以使用RewriteLog调试重写:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog
如果这还不能解决问题,请描述当前的行为和你的期望,否则很难提供帮助。