4

URL GET パラメータを非表示にする方法 ( http://domain.com/MyFirstYii/page?view=about )。たくさんの投稿を検索しました。彼らは皆、書き換えと URL マネージャーについて言っていますが、私は自分が望むものを達成できませんでした。:(

私のシナリオは、

URL GET パラメータを非表示にしたいだけです。

例えば:

http://domain.com/MyFirstYii/page***?view=about***

隠したかった***?view=about***

URL は次のようになりますhttp://domain.com/MyFirstYii/page。このような他のページhttp://domain.com/MyFirstYii/post。簡単に言えば、GET パラメータは POST パラメータのように機能するはずです。

前もって感謝します。

編集:

URLManagerにいくつかのルールを作成したいのですが、どのようなルールで GET パラメータを非表示にしますか?

4

5 に答える 5

3

正規表現の\wは「単語」文字を意味し、「my-prety-page」などの URL 部分は一致しません。GET パラメータを非表示にするには、urlManager ルールを改善する必要があります。SEF url を使用して、ページに対してそのようなルールを作成できます。

'<controller:\w+>/<id:\d+>/<title:[^\/]*>/*' => '<controller>/view'

この場合、URLを入力すると

http://example.com/page/12/my-prety-title

Page コントローラーが呼び出され、id と title を引数としてビュー アクションを実行します。次の URL を入力しても同じです。

http://example.com/page/view?id=12&title=my-prety-title

ルールの最後の部分/*では、追加のパラメーターを保持できます。たとえば、あなたの住所が

http://example.com/user/55/john-doe-junior/foo/bar/

で書くことUserControlleractionViewできます

echo '<pre>' ;
print_r($_GET);
echo '</pre>' ;
die();

そして、あなたは見るでしょう

Array
(
    [id] => 55
    [title] => john-doe-junior
    [foo] => bar
)
于 2013-06-13T13:58:47.477 に答える
0

この URL ルールを URL ルールの先頭に追加します。

'page/<view:\w>' => 'user/page'

私は次を想定しています:

  • コントローラー名: ユーザーコントローラー
  • アクション名: actionPage

私の仮定が間違っている場合は、正しいコントローラー名とアクション名を提供してください。答えを修正できます。

更新: コメントに基づいてコントローラー名を修正

更新 2:

これをコントローラーのすべてのアクションで機能させたい場合は、次を使用します。

'<action:\w>/<view:\w>' => 'user/<action>'
于 2013-06-13T12:46:26.653 に答える
0

main.php からこれらの行のコメントを外します

'urlManager'=>array(
                        'urlFormat'=>'パス',
                        'showScriptName'=>false,
                        'ルール'=>配列(
                                'MyFirstYii/post/<view>'=>'MyFirstYii/post',
                                '<コントローラー:\w+>/<id:\d+>'=>'<コントローラー>/view',
                                '<コントローラー:\w+>/<アクション:\w+>/<id:\d+>'=>'<コントローラー>/<アクション>',
                                '<コントローラー:\w+>/<アクション:\w+>'=>'<コントローラー>/<アクション>',
                        )、
                )、

.htaccess ファイルをプロジェクトのルート ディレクトリに置き、次のコードを記述します。

RewriteEngine on

# ディレクトリまたはファイルが存在する場合は、それを直接使用します
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# それ以外の場合は index.php に転送します
RewriteRule . index.php
于 2013-06-13T12:11:33.500 に答える