0

プロジェクトを終了したので、美化されたURLを理解できません。これが私のURLだとします:

localhost/wowwaylabs/trunk/mpi_v1/index.php?r=products/index&catId=1

products はコントローラーであり、 index はそのコントローラーのアクションです。catId は、URL を介して渡すパラメーターです。URLを美しくする必要があります

localhost/wowwaylabs/trunk/mpi_v1/this-is-india-1

ここで、1 は通過する catId です。

4

4 に答える 4

2

URL を美しくするには、プロジェクトのルート フォルダーにある .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

?rなしでURLを保持します。

次のコメントを外して、パス形式の URL を有効にします (protected/config/main.php 内)。

/*
'urlManager'=>array(
    'urlFormat'=>'path',
    'rules'=>array(
    '<controller:\w+>/<id:\d+>'=>'<controller>/view',
    '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
    '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
  ),
),
*/

次に'showScriptName'=>false,、同じファイルの「urlManager」に追加します。URL から index.php を削除します。

詳細については、次のリンクを確認してください:
http://www.yiiframework.com/doc/guide/1.1/en/topics.url
http://www.sniptrichint.com/tip-of-the-day/beautiful-url-in -yii-インデックスなし/

私はそれがあなたの問題を解決すると思います。

于 2013-01-18T13:44:24.377 に答える
2

this-is-india変数または任意の長さ (つまり、Pitchinnate がコメントで示唆しているように、長さや構文が大幅に異なるカテゴリ名) であると仮定すると、次のように htaccess を編集する必要なく、純粋に URL マネージャーを使用してこれを行うことができます。

'urlManager'=>array(
    ...
    'rules'=>array(
        '<catName:[0-9a-zA-Z_\-]+>-<catId:\d+>'=>'products/index',
        ...
    ),
    ...
),

これは、末尾に数字がある任意の文字の組み合わせを取り、末尾の数字を として使用しますcatId。次に例を示します。

localhost/wowwaylabs/trunk/mpi_v1/this-is-india-1

に解決します

localhost/wowwaylabs/trunk/mpi_v1/index.php?r=products/index&catId=1&catName=this-is-india

同様に;

localhost/wowwaylabs/trunk/mpi_v1/this-is-another-title-or-category-or-whatever-999

次のように解決されます。

localhost/wowwaylabs/trunk/mpi_v1/index.php?r=products/index&catId=999&catName=this-is-another-title-or-category-or-whatever
于 2013-01-18T16:22:06.997 に答える
1

htaccessを介して:)

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$/? index.php?r=$1 [PT,L]

</IfModule>

localhost/wowwaylabs/trunk/mpi_v1/products/index/&catId=1

于 2013-01-18T13:28:15.833 に答える
0

すでにYiiのURLマネージャーを使用している場合(Workonphpの指示に従ってオンにしない場合)、ルールを作成して、次のようにルールの上部に追加してみてください。

'<category_id:\w+>' => 'products/index',

これは、URLで1つのパラメーター(つまり、カテゴリー名とID)のみが渡され、それが文字列/単語(:\ w +はこれを指定)であり、数値(:\ d +)ではない場合にデフォルトで製品コントローラーとインデックスアクション。$category_id次に、変数としてコントローラーに渡されます。次に、そのアクションを変更して、次のように文字列からIDを引き出す必要があります。

public function actionIndex($category_id) {
    $pieces = explode('-',$category_id);
    $cat_id = end($pieces); //actual category id seperated from name
    //...rest of code for this function
}
于 2013-01-18T14:40:15.560 に答える