如何在实时服务器上修复 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?的主要内容,如果未能解决你的问题,请参考以下文章

Yii2如何将表单请求发送到外部url

使用 yii2 的实时应用程序

yii2数据库读写分离配置

Yii 包访问 url 中的文件

如何修复 DOMException:无法在“XMLHttpRequest”上执行“打开”:调用第三方服务器/api 时 URL Angular HttpClient 无效?

Yii2 - 获取控制器的动作但是使用url