【发布时间】:2014-03-23 23:33:16
【问题描述】:
我是 php 和 Yii 的新手,这可能是一个非常愚蠢的问题。我在 Mac OS X 上使用 Yii 框架来开发 Web 应用程序。我正在处理的代码库是在 Windows 机器上设置的,并且在 Windows 操作系统上运行良好。但是,当我尝试在我的 Mac OS X 上运行它时,我收到 404 not found 错误。 main.php 配置文件中的 url 路由似乎有问题。
我的网址管理器有以下代码
'urlManager'=>array(
'showScriptName'=>false,
'caseSensitive'=>true,
'urlFormat'=>'path',
'rules'=>array(
'' => 'home',
'learn-more' => 'home/learn_more',
'cpi' => 'cpi/index',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<controller:\[\w\-]+>/<action:\[\w\-]+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\[\w\-]+>/<action:\[\w\-]+>/<code:\w+>'=>'<controller>/<action>',
'<controller:\[\w\-]+>/<action:\[\w\-]+>'=>'<controller>/<action>',
),
),
我的文件夹结构是这样的
> protected
> components
> config
> controllers
> views
> about
> careers
> contact
> cpi
> devadmin
> error
> home
> info
> layouts
项目文件夹中的.htaccess文件有以下几行代码
RewriteEngine on
# 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
我的主页http://mysite.com 必须映射到 /home/index(即 HomeController 中的索引操作),这样可以完美运行。 “views”下的每个其他文件夹都有一个 index.php 文件。我需要将http://mysite.com/devadmin 类型的url 映射到/devadmin/index。现有规则在 Windows 操作系统下运行时运行良好,但在我的 Mac 操作系统上给我一个错误。我想知道我的网址管理器中是否有任何特定于 Windows 的代码。如果有人能建议我解决这个问题,我会很高兴。
【问题讨论】:
-
你有 devadmin 控制器吗?它不会直接映射到 View 文件夹,而是映射到控制器和操作,即呈现视图的操作。
-
@Pitchinnate 是的,我在控制器文件夹中有一个 devadmin 控制器(DevadminController.php),它有一个动作(actionIndex),这个动作在成功登录时呈现主页。如果我使用 url mysite.com/index.php?r=devadmin/index,那么页面会正确呈现。我正在尝试找到一种解决方案,通过该解决方案可以使用 url sndev:8080/devadmin 呈现页面。
-
sndev:8080/devadmin/index 工作吗?如果是这样,请在下面查看我的答案。
-
如果没有,其他页面是否像
sndev:8080/careers/index一样工作? -
@Pitchinnate No sndev:8080/devadmin/index 不起作用。它给了我一个 404 Not Found 错误。 sndev:8080/careers/index 等其他页面也不起作用。我尝试了您的解决方案,但似乎也不起作用。
标签: php url-rewriting yii url-routing