Yii框架,如何为后端定义url

时间:2012-06-11 14:13:56

标签: yii url-routing

我正在使用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>

6 个答案:

答案 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的控制器。