2016-07-23 13 views
0

私はYii2 advancedとNginxを使用しています。マイurlmanager:Yii2フレンドリーURLが動作しません。

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => false, 
    'rules' => [ 
     'test1' => 'page/view?id=1', 
     'test2' => 'page/view?id=2', 
    ], 
], 

mydomain.com/page/view?id=1 - 動作しません - それは

mydomain.com/test1に動作します。 404エラー

Yii1で動作しましたが、Yii2では動作しません。どうしましたか?おかげさまで ルールのパラメータの

答えて

1

デフォルトのプロパティの配列をdefaultsプロパティに設定できます。

'rules' => [ 
    [ 
     'pattern' => 'test1', 
     'route' => 'page/view', 
     'defaults' => ['id' => 1], 
    ], 
], 
+0

ありがとう!それは仕事です。 –

0

使用正規表現:

'rules' => [ 
    'test/<id:\d+>' => 'page/view', 
], 

はまた、あなたのurlManager設定でルーティングとURLの作成http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html#routing

+0

はありません、私の質問は、私は、私は単一を作成するために、その場合は、URL –

+0

にはるかに優れたIDを必要としない代わりにmydomain.com/page/view?id=1 mydomain.com/testを使用する方法であります各test1とtest2のURLのページを開き、 '' test1 '=>' page/test1 '、' test2 '=>' page/test2''のように記述することができます。あなたのパス_page/view?id = 1_と**?id = 1 **については、あなたのルールに** id **がなければならないと仮定しているので、regexpの使用をお勧めします。 – smokehill

0

についてYii2のドキュメントを読んで、あなただけのコントローラとアクションを定義する必要があります。

だからあなたrulesは次のようになります。

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => false, 
    'rules' => [ 
     'test1' => 'page/view', 
     'test2' => 'page/view', 
    ], 
], 

あなたがリンク@baseUrl/test1?id=1@baseUrl/test2?id=2経由で実行することができ、またはこれurlHelperはあなたのビューで使用します。

Html::a('test1', \yii\helpers\Url::to(['test1', 'id' => 1])) 

あなたとtest1ショーのページビューにしたい場合id=1test2id=2と表示されますが、次のようなルールを設定する必要があります。

'rules' => [ 
    //other rules ... 
    [ 
     'pattern' => 'test<id:\d+>', 
     'route' => 'page/view', 
    ], 
    //other rules ... 
], 

希望すると便利です。

Goodluckと楽しい時を過す。

+0

私はURLにidを必要としません。 'domain.com/download' - ' domain.com/page/view?id = 1'や 'domain.com/test' - ' domain.com/page/view?id = 2'などのようになります。 。 –

関連する問題