如何在实时服务器上修复 Yii2 中的 url?
Posted
技术标签:
【中文标题】如何在实时服务器上修复 Yii2 中的 url?【英文标题】:How to fix urls in Yii2 on live server? 【发布时间】:2021-11-21 02:32:30 【问题描述】:我在 apache 上有实时服务器。 当我访问网站www.example.com/sitename 时,它应该可以正常工作。 当我转到www.example.com/sitename/web 时,只有主页有效。
要创建我使用的链接:
<?= html::a('logowanie', '/site/login'); ?>
但是转到控制器有问题,因为链接指向www.example.com/site/login,这不起作用。缺少“站点名称”。它显示:404 未找到。 在本地主机上一切正常。任何想法如何解决它?
我的 .htaccess:
Options +FollowSymLinks
IndexIgnore */*
# Change default directory page
# DirectoryIndex web/index.php
# Prevent directory listings
Options All -Indexes
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
配置:
$config = [
'id' => 'basic',
'name' => 'kolos',
'language' => 'pl',
'homeUrl' => '/',
'basePath' => dirname(__DIR__),
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
],
'modules' => [
'user' => [
'class' => 'dektrium\user\Module',
],
],
我用来登录https://github.com/dektrium/yii2-user
【问题讨论】:
【参考方案1】:如果你想使用UrlManager
生成URL,你需要把它作为数组传递,表明这是路由,应该被处理。
<?= Html::a('logowanie', ['/site/login']) ?>
'/site/login'
字面意思是/site/login
URL,Yii 不会以任何方式改变它,所以它永远不会包含子目录。
【讨论】:
以上是关于如何在实时服务器上修复 Yii2 中的 url?的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 DOMException:无法在“XMLHttpRequest”上执行“打开”:调用第三方服务器/api 时 URL Angular HttpClient 无效?