如何在yii2中更改基本URL和启用prettyUrl

如何在yii2中更改基本URL和启用prettyUrl,yii2,Yii2,如何更改我的基本url:http://mydomin/ProjectName/frontend/web/index.php?r=product/index类似于此的内容http://mydomin/product/index?我读了很多关于这个话题的文章,但没有一篇是有用的。我还尝试了以下方法: (1) 在我的配置文件frontend/config/main.php中启用prettyUrl,我在阅读一篇文章时添加了一些规则 'urlManager' => [ 'enable

如何更改我的基本url:
http://mydomin/ProjectName/frontend/web/index.php?r=product/index
类似于此的内容
http://mydomin/product/index
?我读了很多关于这个话题的文章,但没有一篇是有用的。我还尝试了以下方法:

(1) 在我的配置文件frontend/config/main.php中启用prettyUrl,我在阅读一篇文章时添加了一些规则

'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
            'product/<controller:\w+>/<action:[\w-]+>/<id:\d+>' => 'product/<controller>/<action>',
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        ],
    ],
现在,当我尝试访问
http://mydomin/ProjectName/frontend/web/product/index
我收到错误消息:在此服务器上找不到请求的URL
/ProjectName/frontend/web/product
。如果我注释掉
'showScriptName'=>false
,则在urlManager设置中,它以这种格式工作
http://mydomin/ProjectName/frontend/web/index.php/product/index
它去掉了
?r=
,但仍然有
index.php
文件。。
如何隐藏此文件,甚至隐藏所有应用程序文件夹,如
projectName、frontend、,和web文件夹
因此在末尾而不是
http://mydomin/ProjectName/frontend/web/index.php/product/index
http://mydomin/ProjectName/frontend/web/index.php?r=product/index
我会得到
http://mydomin/product/index

如果使用advanced-yii2模板,则必须为yor apache创建虚拟主机,像这样:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName yourlocalhost.ru

    DocumentRoot /var/www/yourlocalproject/frontend/web
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/yourlocalproject/frontend/web>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

服务器管理员webmaster@localhost
ServerName yourlocalhost.ru
DocumentRoot/var/www/yourlocalproject/frontend/web
选项如下符号链接
不允许超限
选项索引跟随符号链接多视图
允许超越所有
命令允许,拒绝
通融
ScriptAlias/cgi-bin//usr/lib/cgi-bin/
不允许超限
选项+执行CGI-多视图+符号链接所有者匹配
命令允许,拒绝
通融
ErrorLog${APACHE_LOG_DIR}/error.LOG
#可能的值包括:调试、信息、通知、警告、错误、临界值、,
#警惕,埃默格。
日志级别警告
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
您的本地主机名.ru-您的本地主机名 yourlocalproject-yii项目目录


别忘了将yourlocalhost.ru添加到hosts文件并重新启动apache

1-将此代码放入yii2advance文件夹(项目的主文件夹)中的.htaccess flie中

以上代码转换

'localhost/yii2advance/frontend/web/index.php'

它会转换

'localhost/yii2advance/backend/web/index.php'

2-将此代码添加到前端/.htaccess和后端/.htaccess文件: 重新启动发动机

# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
3-在backend/config/main.php中输入以下代码:

'homeUrl' => '/yii2advance/admin',

'components' => [
'request' => [
            'baseUrl' => '/yii2advance/admin', // localhost/yii2advance/admin
        ],
    'urlManager' => [
         'enablePrettyUrl' => true,
         'showScriptName' => false,
         'rules' => [
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            ],
],
'homeUrl' => '/yii2advance',

'components' => [
'request' => [
        'baseUrl' => '/yii2advance', // localhost/yii2advance
    ],
    'urlManager' => [
         'enablePrettyUrl' => true,
         'showScriptName' => false,
         'rules' => [
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            ],
],
'homeUrl'=>'/yii2advance/admin',
“组件”=>[
“请求”=>[
'baseUrl'=>'/yii2advance/admin',/localhost/yii2advance/admin
],
“urlManager”=>[
“enablePrettyUrl”=>true,
'showScriptName'=>false,
“规则”=>[
“/”=>“/视图”,
'//' => '/',
'/' => '/',
],
],
4-在frontend/config/main.php中输入以下代码:

'homeUrl' => '/yii2advance/admin',

'components' => [
'request' => [
            'baseUrl' => '/yii2advance/admin', // localhost/yii2advance/admin
        ],
    'urlManager' => [
         'enablePrettyUrl' => true,
         'showScriptName' => false,
         'rules' => [
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            ],
],
'homeUrl' => '/yii2advance',

'components' => [
'request' => [
        'baseUrl' => '/yii2advance', // localhost/yii2advance
    ],
    'urlManager' => [
         'enablePrettyUrl' => true,
         'showScriptName' => false,
         'rules' => [
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            ],
],
“homeUrl”=>“/yii2advance”,
“组件”=>[
“请求”=>[
'baseUrl'=>'/yii2advance',//localhost/yii2advance
],
“urlManager”=>[
“enablePrettyUrl”=>true,
'showScriptName'=>false,
“规则”=>[
“/”=>“/视图”,
'//' => '/',
'/' => '/',
],
],

我尝试了上述代码,但它不起作用。尝试访问baseUrl时出现404错误,即/yii2advance/admin,请问我遗漏了什么,我是否必须对apache服务器进行任何更改才能使其起作用??您的项目是在本地主机上还是您上载的?我的项目是在本地主机上您应该将项目根文件夹放在本地主机上相反,我认为你改变了你的apache配置
'homeUrl' => '/yii2advance/admin',

'components' => [
'request' => [
            'baseUrl' => '/yii2advance/admin', // localhost/yii2advance/admin
        ],
    'urlManager' => [
         'enablePrettyUrl' => true,
         'showScriptName' => false,
         'rules' => [
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            ],
],
'homeUrl' => '/yii2advance',

'components' => [
'request' => [
        'baseUrl' => '/yii2advance', // localhost/yii2advance
    ],
    'urlManager' => [
         'enablePrettyUrl' => true,
         'showScriptName' => false,
         'rules' => [
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            ],
],