2017-06-02 26 views
0

我想在Yii2中進行url重寫,並且對於它的工作正常,但對於字符串它不重寫以下是我在配置中的main.php文件的代碼。Yii2 UrlManager w +不能用於字符串

'urlManager' => [ 
       'class' => 'yii\web\UrlManager', 
       // 'urlFormat'=>'path', 
          'enableStrictParsing' => true, 
        'enablePrettyUrl' => true, 
        'showScriptName' => false, 
    'rules' => [ 

     '<page_id:\d+>'=>'site/page', 
      //'<movie_id:[\w-]+>s'=>'site/genre', 
      'genre/<movie_id:\w+>' => 'site/genre', 
     '<alias:\w+>' => 'site/<alias>', 
    ], 
       ], 

movie_id也包含字符串字符,所以我試着w +但它不重寫URL。任何幫助讚賞。

+2

什麼是你想要處理的字符串? – Bizley

+0

該字符串是像新版本,即將推出等電影的類別,並且該字符串包含的空格會自動轉換爲+,像這樣http://sitename.ca/genre?movie_id=Coming+Soon –

+0

它的工作現在與這個正則表達式表達式[A-Za-z0-9 -_。] +而不是w +,並且是它們在url'+'中用連字符或其他東西代替的任何方式 –

回答

0

標誌\w匹配[a-zA-Z0-9_]所以如果你想添加+你需要對其進行修改,如:

<alias:[\w\+]+> 
+0

它不適用於我,但是[A-Za-z0-9 -_。] +爲我工作不知道原因,但感謝你的幫助 –

+0

你已經把'.'在那裏(點) - 沒有逃脫點=每個字符。 – Bizley

+0

對不起,我不明白你想說什麼,我用的表達式產生了一些尷尬的行爲,因爲我的字符串包含空格,所以我用你的表達式,但它的空間,它像這樣工作' s'=>'site/genre',而且沒有's',最終它不會讓我渲染其他頁面。你知道這個的原因嗎? –

相關問題