Yii 2.0从URL中隐藏/ basic/web以及index.php

mmv*_*sbg 3 php .htaccess url-rewriting yii yii2

关于如何从您的Yii 2.0应用程序URL隐藏index.php的网上有大量信息,但是,我在这里要做的是从URL中删除'/ basic/web /'./ basic/web是运行应用程序的目录,到目前为止我的配置如下.这进入配置文件:

'urlManager' =>[
            'enablePrettyUrl' => true,
            'showScriptName' => false,
        ],
Run Code Online (Sandbox Code Playgroud)

这是我在/ web文件夹中的htaccess文件:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Run Code Online (Sandbox Code Playgroud)

到目前为止,这么好,我可以访问直接调用的东西mysite.com/basic/web/controller/action.虽然要删除/ basic/web以使URL变得简单,但我需要做什么mysite.com/controller/action

欢迎任何提示,谢谢!

编辑:我正在寻找一种不触及apache配置文件的方法,因为我无法访问它.

Ohg*_*why 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]
Run Code Online (Sandbox Code Playgroud)

完成后将.htaccess权限更改为440.没有什么可以担心使用这种方法,与Mihai P.所说的相反.

  • 我实际上认为"不鼓励使用.htaccess文件,因为它们会对服务器性能产生不利影响.只在必要时才使用它们." 来源:http://wiki.apache.org/httpd/Htaccess.即使他不能使用.htaccess文件,为什么还要像我说的那样在其中添加另一个条件呢?这不是一个更好的做法(只有1个文件暴露)然后你建议吗?这就是为什么Yii,Laravel等有1个文件夹暴露在互联网而不是他们的整个应用程序文件夹的原因.无论如何只是我的2c,我宁愿教育然后回答错误的问题. (4认同)

Mih*_* P. 5

您应该以另一种方式定义您的apache配置.您的网站应指向{folder}/basic/web,而不是{folder}.

因为您更改了要求:

对于cpanel设置,您应该:
1)删除愚蠢的基本文件夹,无论如何它的意义是什么?只是因为Yii安装这种方式并不意味着你必须保留它.所以将所有内容都提升1级.
2)将web重命名为public_html,确保在某些文件中重命名它(想到config/bootstrap).

是的,你可以用.htaccess来做,但你不应该把文件暴露在互联网上,只是你的网络文件夹应该暴露,所以我不给你那个解决方案,因为它不是一个好的.