在 YII2 基本应用程序中从 url 隐藏 'web' 文件夹时出现问题
problems when hiding the 'web' folder from the url in YII2 basic application
YII2 基本应用安装在 'ims' folder.The 的本地主机下 folder.The 链接就像
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) 在根 .htaccess 中
Options -Indexes
RewriteEngine on
RewriteRule ^(.*)$ web/ [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
它缺少 url 'ims' 中的基本文件夹名称。对此有什么建议或想法吗?
注意:- 我不希望使用 Apache 配置来实现此目的,也不希望将 Web 文件夹的内容移到外面。
我希望在不更改 YII2 基本应用程序结构的情况下从 url 中隐藏 'web'。
我在这里回答我自己的问题:-
我唯一需要做的改变就是
'baseUrl' => '/', to 'baseUrl' => '/ims',
所以更改后的代码看起来像
'components' => [
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'baseUrl' => '/ims',
],
现在我可以浏览所有没有文字 'web' 的页面。这是在不进行任何 apache 配置或移动根目录中的 web 文件夹的情况下实现的。 :)
- 在 web/.htaccess 文件中
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
- 在根 .htaccess 中
Options -Indexes
RewriteEngine on
RewriteRule ^(.*)$ web/ [L]
- 在config/web.php
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' => '/',
],
到目前为止,这终于对我有用了
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/ [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>
注意:只需删除 config/web 中的 'baseUrl'=>'/'。php
YII2 基本应用安装在 'ims' folder.The 的本地主机下 folder.The 链接就像
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) 在根 .htaccess 中
Options -Indexes
RewriteEngine on
RewriteRule ^(.*)$ web/ [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
它缺少 url 'ims' 中的基本文件夹名称。对此有什么建议或想法吗?
注意:- 我不希望使用 Apache 配置来实现此目的,也不希望将 Web 文件夹的内容移到外面。 我希望在不更改 YII2 基本应用程序结构的情况下从 url 中隐藏 'web'。
我在这里回答我自己的问题:-
我唯一需要做的改变就是
'baseUrl' => '/', to 'baseUrl' => '/ims',
所以更改后的代码看起来像
'components' => [
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'baseUrl' => '/ims',
],
现在我可以浏览所有没有文字 'web' 的页面。这是在不进行任何 apache 配置或移动根目录中的 web 文件夹的情况下实现的。 :)
- 在 web/.htaccess 文件中
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
- 在根 .htaccess 中
Options -Indexes
RewriteEngine on
RewriteRule ^(.*)$ web/ [L]
- 在config/web.php
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' => '/',
],
到目前为止,这终于对我有用了
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/ [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>
注意:只需删除 config/web 中的 'baseUrl'=>'/'。php