2017-09-24 60 views
0

我試圖在一個Share Hosting環境中部署Yii2(基本模板)的小型項目。一切都在當地正常工作。 主機服務器就像下面的根目錄:Yii2 Pretty Url在Share Hosting(基本模板)中不起作用

/ 
---logs 
---index.html 

閱讀Yii2的doc後。然後刪除文件index.html並將我的項目文件夾上傳到根目錄。它現在看起來像這樣:

/ 
---logs 
---assets 
---commands 
---config 
---controllers 
--- ... 
---views 
---web 
--- ... 

嘗試網站後,我有一個空白頁。於是我決定創建主機服務器的根目錄htaccess文件指向網絡文件夾喜歡這裏

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^www.example.com$ 
RewriteCond %{REQUEST_URI} !web/ 
RewriteRule (.*) /web/$1 [L] 

在這之後我能得到的索引頁非常好,

www.example.com 

當我嘗試訪問例如(與URL prettyUrl激活)時,我得到空白頁

www.example.com/articles/list 

,但是當我停用prettyUrl,它那像工作例如

www.example.com/web/index.php?r=articles/list 

在Web文件夾中的.htaccess是這樣的:

Options +FollowSymLinks 
IndexIgnore */* 

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 

# Disable Directory Browsing 
Options All -Indexes 

和URL規則在web.php設置文件如下:

'urlManager' => [ 
     'class' => 'yii\web\UrlManager', 
     'showScriptName' => false, 
     'enablePrettyUrl' => true, 
     'baseUrl' => '/', 
     'rules' => [       
       ... 
       '<controller:\w+>/<id:\d+>' => '<controller>/view', 
       '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
       '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 

       ], 
    ], 
+0

我要做的第一件事就是在'.htaccess'文件中引入一些垃圾來檢查它是否被讀取。如果是這樣,訪問任何頁面時應該彈出一個錯誤500 – gmc

+0

@gmc我做了它並且讀取了.htaccess文件。 – stfsngue

回答

0

大多數共享主機禁用了一些來自htaccess文件的指令以防止一些安全問題。如果在你的htaccess文件中發現一個受限制的指令,你會得到一個500錯誤頁面。

很可能如果您刪除Options +FollowSymLinks指令,一切都會生效。

此外,您可以查看apache錯誤日誌以獲取更多信息。

+0

感謝您的幫助。但它仍然不起作用。 – stfsngue

+0

你在apache錯誤日誌中有一些錯誤嗎? Ps .:嘗試從配置中刪除baseUrl。 –