我的目标是使用Yii-2编写网络应用程序。我使用apache作为我在ubuntu上的本地web服务器。目前,我想配置yii2 urlManager。并将其写入config/web.php中:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
],这是一个简单的设置。在enablePrettyUrl工作良好的地方,我可以使用url-链接(如http://localhost/basic/web/index.php/nameOfController/AndAction )。但是当我设置showScriptName时,这对我来说是不正确的。我将apache配置为:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>当然,我将.htaccess文件添加到web文件夹中,其中包括:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php我使用basic 2-basic应用程序localhost/basic/web/testController/testAction.,在运行服务器之后,我可以打开站点,例如:localhost/basic/testController/testAction,,但是我希望使用这样的链接:localhost/basic/testController/testAction,,在最后一个示例中,我不使用文件夹web。
好的,谢谢所有读过它的人。你知道我怎么能解决这个问题吗?谢谢。和mod_rewrite也已启用。
发布于 2016-01-15 04:16:39
在开发环境中,您应该简单地将web服务器指向web目录,在当前状态下,指向位于上面一层的项目根目录。使用Apache,可以通过更改DocumentRoot来实现这一点,请参阅此回答。
如果您有可能在生产服务器上做同样的事情,这是可以的。如果不是(例如,它是共享托管),下面是您需要做的事情。
首先,在正式文档中有专门用于在共享托管上部署和配置应用程序的部分。
这个问题也曾多次被问过,这些都是他们的链接,所以:
根据我在共享主机上配置Yii2的个人经验,我用符号链接解决了这个问题。
例如,宿主为项目提供了路径,类似于/home/user_name/projects/project_name
Webroot是/home/user_name/projects/project_name/htdocs,不允许更改它。我将项目放在单独的文件夹中:/home/user_name/projects/project_name/current。然后在终端中执行以下命令:
cd ~/projects/project_name
rm htdocs
ln -s current/frontend/web htdocs
cd ~/projects/admin-project_name
rm htdocs
ln -s ../project_name/current/backend/web htdocsadmin-project-name是后端的单独项目。
这是高级应用程序,对于基本应用程序,它只是:
cd ~/projects/project_name
rm htdocs
ln -s current/web htdocshttps://stackoverflow.com/questions/34801726
复制相似问题