我正在使用yii框架开发CMS。有一个前端和后端。我希望用户能够像下面这样访问后端:http://www.mysite.com/admin,现在它的工作方式如下:http://www.mysite.com/admin.php。
对于后端,我已经使用自己的配置,控制器和...定义了不同的部分,以及在admin.php中访问后端的页面
这是我的目录结构:
...
admin
--components
--config
---main.php
--controllers
---NewsController.php
---ShowCOntroller.php
---SiteController.php
--models
---LoginForm.php
---News.php
---Show.php
---User.php
--runtime
...
--Views
---layouts
---news
---show
---site
protected
-commands
-data
-extentions
-messages
-migrations
-models
-modules
--image
-runtime
-views
themes
uploads
admin.php
index.php
.htaccess
这是我的.htaccess文件:
Options +FollowSymLinks
IndexIgnore */*
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule admin admin\.php [T=application/x-httpd-php]
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
</IfModule>
答案 0 :(得分:3)
你可以看看我是如何在@ bool.dev Yii: .htaccess and urlManager for separate backend and frontend的帮助下解决的。
我希望它有所帮助。
答案 1 :(得分:2)
您可以考虑的一件事是在后端创建后端Yii module。模块就像应用程序中的应用程序。您可以创建模型,控制器和视图,可能会重用前端的代码。访问模块的URL包括模块名称;例如http://www.example.com/admin/controller/action。
另一方面,如果您只想将发送到/admin
的请求映射到脚本admin.php
,则可以在mod_rewrite中执行此操作。例如:
# .htaccess
RewriteEngine On
RewriteRule ^admin admin.php # route requests for /admin to admin.php
# Rest of Yii's rewrite rules:
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
答案 2 :(得分:2)
我还建议采用模块方式。
然后,您可以使用网址管理器来管理管理员的网址。
答案 3 :(得分:1)
您确实需要通过index.php指示所有请求。
使用URL管理器路由管理员请求。看看这里http://www.yiiframework.com/doc/guide/1.1/en/topics.url
答案 4 :(得分:1)
我建议您使用Yii Module基本概念。因此,Admin页面将成为您应用程序的模块。
请参阅此链接http://www.yiiframework.com/doc/guide/1.1/en/basics.module
答案 5 :(得分:0)
使用yii Url Manager,这是最好的,如果后端的所有配置和控制器都不同,那么你可以构建一个名为AdminController的控制器。