网上有很多关于如何从你的Yii 2.0应用程序URL隐藏index.php的信息,但是,我在这里要做的就是从URL中删除'/ basic / web /'。 / basic / web是运行应用程序的目录,到目前为止我的配置如下。这进入配置文件:
'urlManager' =>[
'enablePrettyUrl' => true,
'showScriptName' => false,
],
这是我在/ web文件夹中的htaccess文件:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
到目前为止,非常好,我可以访问直接调用mysite.com/basic/web/controller/action
的内容。虽然要删除/ basic / web以使URL变得简单mysite.com/controller/action
,但我需要做什么?
欢迎任何提示,谢谢!
编辑:我正在寻找一种不触及apache配置文件的方法,因为我无法访问它。
答案 0 :(得分:7)
RewriteEngine on
# Change yourdomain.com to be your primary domain.
RewriteCond %{HTTP_HOST} ^(www.)?yourdomain.com$
RewriteCond %{REQUEST_URI} !^/basic/web/
# Don't change this line.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /basic/web/$1
RewriteCond %{HTTP_HOST} ^(www.)?yourdomain.com$
RewriteRule ^(/)?$ basic/web/index.php [L]
完成后,将.htaccess权限更改为440。没有什么可以担心使用这种方法,与Mihai P所说的相反。
答案 1 :(得分:5)
您应该以另一种方式定义您的apache配置。您的网站应指向{folder} / basic / web,而不是{folder}。
因为您更改了要求:
对于cpanel设置,您应该:
1)删除愚蠢的基本文件夹,无论如何它是什么意思?只是因为Yii安装这种方式并不意味着你必须保留它。所以将所有内容都提升1级
2)将web重命名为public_html,确保在某些文件中重命名它(想到config / bootstrap)。
是的,您可以使用.htaccess执行此操作,但是您不应该将文件暴露给互联网,只是应该公开您的网络文件夹,因此我不会给您解决方案,因为它不是一个好的。
答案 2 :(得分:1)
工作解决方案就在这里!
步骤1.在yii2基本应用程序目录中创建一个index.php文件并填写如下
<?php
// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require __DIR__ . '/vendor/autoload.php';
require __DIR__ . '/vendor/yiisoft/yii2/Yii.php';
$config = require __DIR__ . '/config/web.php';
(new yii\web\Application($config))->run();
步骤2.在同一个基本目录中创建一个.htaccess文件,如下所示
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