2015-04-07 62 views
0

我Yii中根據文檔如何在沒有根路徑的Yii中使用漂亮的URL?

http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html

並打開漂亮網址的主頁是可見的,但是當我嘗試去到另一個URL,它給了我一個錯誤。

http://localhost:81/xxx/web/shopping/search?q=toaster

所請求的網址/ XXX /網絡/購物/搜索此服務器上找到。

我試圖創建一個通用規則,但它沒有幫助。

'urlManager' => [ 
     'enablePrettyUrl' => true, 
     'showScriptName' => false, 
     'enableStrictParsing' => false, 
     'rules' => [ 
      // ... 
      '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
     ], 
    ], 

該文檔明確指出不要在路徑中包含子文件夾。

注意:帶服務器名稱的規則不應在其模式中包含條目腳本的子文件夾。例如,如果應用程序在http://www.example.com/sandbox/blog之下,則應該使用http://www.example.com/posts而不是http://www.example.com/sandbox/blog/posts的模式。這將允許您的應用程序部署在任何目錄下,而無需更改您的應用程序代碼。

我必須明確列出每一條路線嗎?我試圖給一個明確的路線

'shopping/search' => 'shopping/search', 

但它沒有幫助。

回答

-1

這是因爲Apache。在不指向index.php的情況下,Apache不知道在哪裏發送請求,並且是發出錯誤的那個人。這將默認爲index.php

# For pretty URLs 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

https://komarashettynageshrao.wordpress.com/2010/02/04/pretty-urls-in-yii/

+0

當然可以。對於子文件夾沒有限制,您提到的引用適用於帶有服務器名稱的規則。 – estus

0

試試這個

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