2015-12-18 17 views
5

我正在使用yii2.I有與url結構有關的問題。我怎麼能在Yii2改變URL結構我目前的網址如下如何更改Yii2目錄中的url參數?

http://localhost/advanced/posts/view?id=1 

給我預期的URL是

http://localhost/advanced/posts/view/id/1 

我按照以下鏈接更改Yii2

的默認網址

Yii2 htaccess - How to hide frontend/web and backend/web COMPLETELY

+0

集enableprettyurl爲true在配置 –

+0

@InsaneSkull漂亮的網址已經啓用,我認爲。否則,他的「當前網址」將無法正常工作。 –

+0

prettyurl已啓用 –

回答

4

Web.php

'urlManager' => [ 
     'showScriptName' => false, 
     'enablePrettyUrl' => true, 
     'enableStrictParsing' => false, 
     'rules' => [ 
      '<controller>/<action>/<id:d+>' => '<controller>/<action>' 
     ], 
    ], 

如果有字母數字參數,則使用。

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

有關更多信息,請點擊URL Not Accepting Alpha Numeric Paramater

+0

建議使用此代替您的規則; '//'=>'/'',它更精確,不允許在字母 –

+0

好吧。 @JoeMiller。但是,爲什麼我寫了'',因爲如果參數會像41a。意味着字母數字。然後,它可能會有所幫助。在''中,不接受字母數字參數。 –

+0

只是因爲他使用了id作爲參數,id的通常只是數字,所以他們可以在數據庫中自動遞增,否則你最好使用'',這將允許任何普通的單詞字符(字母和數字) 。如果你只有'[a-z0-9]',那麼它將不允許國際字符,而我認爲'w +'會。 –

2
'components' => [ 
    'urlManager' => [    
     'showScriptName' => false, // Disable index.php 
     'enablePrettyUrl' => true, // Disable r= routes 
     'enableStrictParsing' => true, 
     'rules' => array(
       'mycategory/<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
       '<controller:\w+>/<id:\d+>' => '<controller>/view', 
       '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
       '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
       //Rules with Server Names 
       'http://admin.domain.com/login' => 'admin/user/login', 
       'http://www.domain.com/login' => 'site/login', 
       'http://<country:\w+>.domain.com/profile' => 'user/view', 
       '<controller:\w+>/<id:\d+>-<slug:[A-Za-z0-9 -_.]+>' => '<controller>/view', 
      ), 
    ], 
], 

,並請點擊此鏈接: first link second link