您好我已经开始使用Yii开发Web应用程序了。我已经成功隐藏了index.php
。
但我有两个问题。
管理员控制器site.com/admin
正在显示admin的登录页面。
注销后,我将重定向回索引(登录页面)。
$this->redirect('index');
虽然网址现在为site.com/admin/index
,但我想隐藏/index
位。我尝试了this,但这无法解决问题。
在管理员登录页面上,我有以下javascript代码
$("#superlogin").click(function () {
$.ajax({
url: "index.php/admin/adminlogin",
data: $("#adminlogin").serialize(),
method: "post",
success: function (data) {
if (data !== "failure") {
window.location.href = "admin/admindashboard";
}
else {
alert("Please check username and password");
}
},
failure: function () {
}
});
});
当URL为site.com/admin
但URL为:
site.com/admin/index
- 退出后就可以了。site.com/admin/
- 尾随斜线javascript重定向会将我发送给
在两种情况下都是{p>site.com/admin/index.php/admin/adminlogin
而不是site.com/index.php/admin/adminlogin
。
最好的方法是什么?
答案 0 :(得分:1)
有几种方法可以实现这一目标,但最简单的方法可能是将您的重定向更改为:
$this->redirect('/admin');
如果你在路线上转发这个,那就更好了。这样,如果配置发生变化,您不必更改任何硬编码链接。
$this->redirect($this->createUrl("admin/index"));
然后强制执行admin / index总是重写为admin,你可以在urlManager
(在配置中)
'urlManager' => array(
'showScriptName' => false,
'urlFormat' => 'path',
'rules' => array(
'admin/index' => 'admin',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
),
Yii中创建正确URL的最佳方法始终是回到createUrl函数,即使在JavaScript中也是如此。
//Yii.app.createUrl('controller/action');
//relies on https://github.com/ainsej/Yii-JSUrlManager
$("#superlogin").click(function () {
$.ajax({
url: '<?= Yii::app()->createUrl('admin/adminlogin); ?>',
data: $("#adminlogin").serialize(),
method: "post",
success: function (data) {
if (data !== "failure") {
window.location.href = '<?= Yii::app()->createUrl('admin/admindashboard); ?>';
}
else {
alert("Please check username and password");
}
},
failure: function () {
}
});
});