2016-01-14 70 views
-1

我的目标是使用Yii-2编写Web应用程序。我在Ubuntu上使用Apache作为我的本地Web服务器。目前,我想配置yii2 urlManager。而在配置/ web.php这样写:如何设置Yii2路由和Apache?

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

这是简单的设置。在enablePrettyUrl工作正常,我可以使用url-link,如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 

我使用基本yii2-基本应用和运行服务器后,我可以打开网站,例如: localhost/basic/web/testController/testAction。 但我想要使用这样的链接: localhost/basic/testController/testAction,最后一个例子我不使用文件夹web

好的,谢谢所有读过它的人。你有什么想法我怎么能解决这个问题? 谢谢。 并且mod_rewrite也被启用。

回答

0

在开发环境中,您应该简单地将web服务器指向web目录,以当前状态指向位于上一级的项目根目录。使用Apache可以通过更改DocumentRoot来完成,请参阅此answer

如果您有可能在生产服务器上执行相同的操作,则无问题。如果没有(例如它是共享主机),这是你需要做的。

首先在官方文档中有专门的部分,用于在shared hosting上部署和配置应用程序。前

而且这个问题被问了很多次,这些都是因此对他们的联系:

从我个人的配置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 htdocs 

admin-project-name是后端独立的项目。

这是先进的应用,基本的应用程序,它只是:

cd ~/projects/project_name 
rm htdocs 
ln -s current/web htdocs