1

私は私の中にこれを持っています.htaccess

RewriteCond %{QUERY_STRING} ^(.*)?$
RewriteRule ^([0-9A-Za-z\-_]+)(/)?  index.php?action=view&type=page&page=$1&%1 [L]

しかし、これをブラウザに入れると:

http://localhost:8888/myapp/test%20doc

URL は次のように変換されます。

index.php?action=view&type=page&page=test

取得できない理由:

index.php?action=view&type=page&page=test%20doc ?
4

1 に答える 1

2

読みやすくするために、 を削除しRewriteCondて QSA (Query String Append) フラグを に追加しますRewriteRule

RewriteRule     ^([\w-]+)/?    index.php?action=view&type=page&page=$1 [QSA,L]

( ) でテストしている URL にはhttp://localhost:8888/myapp/test%20docクエリ文字列がありません。次のものでテストするつもりですか:

http://localhost:8888/myapp/test?doc

編集

問題はクエリ文字列とは何の関係もありません。文字クラスのスペース文字を一致させておらず、一致させようとしているという事実のみ。文字クラスにスペースを追加するだけです。これもうまくいくはずです:

^([ \w-]+)/?

\w単なる省略形です0-9A-Za-z_

于 2013-07-23T18:13:59.480 に答える