2016-01-14 67 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