Php 如何使用yiInitializer在Yii项目中创建友好链接
我尝试在我的Yii项目中使用yiinitializer站点结构。结构如下所示:Php 如何使用yiInitializer在Yii项目中创建友好链接,php,apache,.htaccess,yii,Php,Apache,.htaccess,Yii,我尝试在我的Yii项目中使用yiinitializer站点结构。结构如下所示: root --backend ----standart yii folders ----... ----www ------index.php (admin.mysite.com) --common ----common folders for backend and frontend ----... --backend ----standart yii folders ----... ----www ------i
root
--backend
----standart yii folders
----...
----www
------index.php (admin.mysite.com)
--common
----common folders for backend and frontend
----...
--backend
----standart yii folders
----...
----www
------index.php (mysite.com)
admin.mysite.com/invites - in backend
问题是如何制作这样的工作URL:
root
--backend
----standart yii folders
----...
----www
------index.php (admin.mysite.com)
--common
----common folders for backend and frontend
----...
--backend
----standart yii folders
----...
----www
------index.php (mysite.com)
admin.mysite.com/invites - in backend
及
当我在虚拟主机上上传项目时,出现了路由问题。后端,例如:
admin.mysite.com/backend/www/?r=site/invites - working properly
admin.mysite.com/backend/www/invites - working properly
admin.mysite.com/?r=site/invites - working properly
admin.mysite.com/invites - redirects to index
根文件夹拥有自己的.htaccess,可访问以下内容:
RewriteEngine On
RewriteRule ^backend/www/ - [last]
RewriteCond %{HTTP_HOST} admin.mysite.com [nocase]
RewriteRule (.*) backend/www/$1 [last]
RewriteRule ^frontend/www/ - [last]
RewriteCond %{HTTP_HOST} !admin.mysite.com [nocase]
RewriteRule (.*) frontend/www/$1 [last]
backend/www/.htaccess具有重写规则:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
</IfModule>
选项+FollowSymlinks
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则。index.php
和Yii代码:
'urlManager' => array(
// uncomment the following if you have enabled Apache's Rewrite module.
'urlFormat' => 'path',
'showScriptName' => false,
'rules' => array(
// default rules
'<page:\w+>' => 'site/<page>',
'' => 'site/index',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
),
'urlManager'=>数组(
//如果启用了Apache的重写模块,请取消注释以下内容。
“urlFormat”=>“路径”,
'showScriptName'=>false,
'规则'=>数组(
//默认规则
''=>'站点/',
''=>'站点/索引',
“/”=>“/视图”,
'//' => '/',
'/' => '/',
),
),
聊天室讨论后更新:所有问题都将出现在
$\u服务器['SCRIPT\u NAME']
,它等于/backend/www/index.php
。这就是为什么在CHttpRequest::getPathInfo
中解析请求是空值的原因,因为$baseUrl(它是$\u服务器['SCRIPT\u NAME']的basedir,而不是'
)和$\u服务器['PHP\u SELF']==$\u服务器['SCRIPT\u NAME']
。
两种解决方案:
$\u服务器['SCRIPT\u NAME']='/index.php'的开头代码>
admin.example.com
直接访问目录/backend/www/
admin.mysite.com/site/invests
是否正常工作?是否仍重定向到Indexa是否重定向到admin.mysite.com/backend/www/index.php
或admin.mysite.com/index.php
?运行actionIndex,但我不知道如何检查重定向到的确切url。托管支持从服务器的角度写下admin.mysite.com/backend/www/index.php和admin.mysite.com/index.php是您可以在以下所有代码之前插入index.php的相同地址:exit(var\u export($\u server,true))
。你能给我看一下所有带有url的字符串(可能是请求URI)解析错误:语法错误,第13行的~/www/htdocs/backend/www/index.php中出现意外的T\u REQUIRE