从YII2基本应用程序

时间:2015-12-26 08:24:10

标签: php .htaccess url-rewriting yii2 yii-url-manager

YII2基本应用程序安装在'ims'文件夹中的localhost下。链接类似于

http://192.168.0.99/ims/web/(主页)

http://192.168.0.99/ims/web/index.php?r=site%2Fabout(关于我们页面)

到目前为止,我所做的是。

1)在web / .htaccess文件中

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

2)在root .htaccess中

Options -Indexes
RewriteEngine on
RewriteRule ^(.*)$ web/$1 [L]

3)在config / web.php

'components' => [
        'urlManager' => [
            'class' => 'yii\web\UrlManager',
            'enablePrettyUrl' => true,
            'showScriptName'  => false,
            'baseUrl' => '/',
        ],

这解决了以下问题:

1)链接现在是SEO友好

2)index.php现在不在url中显示

3)可以使用http://192.168.0.99/ims/

访问主页

问题: - 关于,联系&登录链接现在变为

http://192.168.0.99/site/about

http://192.168.0.99/site/contact

http://192.168.0.99/site/login

它错过了网址'ims'中的基本文件夹名称。有关于此的任何建议或想法吗?

注意: - 我不希望使用Apache配置来实现这一点,而且我也不希望将web文件夹的内容移到外面。 我希望在不改变YII2基本应用程序结构的情况下隐藏URL中的“web”。

3 个答案:

答案 0 :(得分:0)

我在这里回答我自己的问题: -

我需要做的唯一改变

'baseUrl' => '/', to 'baseUrl' => '/ims',

所以改变的代码看起来像

    'components' => [
        'urlManager' => [
            'class' => 'yii\web\UrlManager',
            'enablePrettyUrl' => true,
            'showScriptName'  => false,
            'baseUrl' => '/ims',
        ],

现在我可以浏览所有没有文字的网页' web'在里面。这是在不进行任何apache配置或在根目录中移动Web文件夹的情况下实现的。 :)

答案 1 :(得分:0)

到目前为止,这最终对我有用

<强> 1。在web / .htaccess文件中

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

<强> 2。然后在root .htaccess

<code>
    Options -Indexes
    RewriteEngine on
    RewriteRule ^(.*)$ web/$1 [L]
</code>

第3。在config / web.php

<code>
    use \yii\web\Request;
    $baseUrl = str_replace('/web', '', (new Request)->getBaseUrl());
    'components' => [
        'request' => ['baseUrl' => $baseUrl,],
        'urlManager' => [
            'class' => 'yii\web\UrlManager',
            'enablePrettyUrl' => true,
            'showScriptName'  => false,
        ],
</code>

注意:只需删除&#39; baseUrl&#39; =&gt;&#39; /&#39;在config / web.php中

答案 2 :(得分:-1)

  1. 在web / .htaccess文件中
  2. Options +FollowSymLinks
    IndexIgnore */*
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php
    
    1. in root .htaccess
    2. Options -Indexes
      RewriteEngine on
      RewriteRule ^(.*)$ web/$1 [L]
      
      1. 在config / web.php
      2. use \yii\web\Request;
        $baseUrl = str_replace('/web', '', (new Request)->getBaseUrl());
        
        'components' => [
                'request' => [
                    'baseUrl' => $baseUrl,
                ],
                'urlManager' => [
                    'class' => 'yii\web\UrlManager',
                    'enablePrettyUrl' => true,
                    'showScriptName'  => false,
                    'baseUrl' => '/',
                ],