2

書き換えルールと正規表現について助けが必要です

これは私の入力URLです

http://localhost/ws/rest/user/login?login=user_login&password=user_pass

これにリダイレクトさせたい

http://localhost/index.php?type=rest&ressource=user&action=login&login=user_login&password=user_pass

私の書き換えルール

RewriteCond %{REQUEST_METHOD} ^(GET|POST)
RewriteRule ^ws/(.+)/(.+)/([A-Za-z]+)(\\?)(.+)?   index.php?type=$1&ressource=$2&action=$3&$5 [L]

問題はURLの周りにあると思います?.aに置き換えると&機能するからです?

4

2 に答える 2

3
RewriteEngine On

RewriteCond %{REQUEST_METHOD} ^(GET|POST)
RewriteRule ^ws/([^/]+)/([^/]+)/([A-Za-z]+) index.php?type=$1&resource=$2&action=$3 [QSA,L]

QSA元の URL のクエリ文字列が新しい URL に追加されるように、フラグに注意してください。

于 2013-10-02T16:55:46.123 に答える
1

問題: QUERY_STRINGで一致しませんRewriteRule。コードを次のように置き換えます。

RewriteCond %{QUERY_STRING} ^login=user_login&password=user_pass$ [NC]
RewriteRule ^ws/([^/]+)/([^/]+)/([a-z]+)/?$ /index.php?type=$1&ressource=$2&action=$3 [L,QSA,NC]

ここでフラグを使用しているため、既存のQUERY_STRINGものが結果の URI に追加されます。QSA

詳細については、こちらをご覧ください: Apache mod_rewrite の紹介

于 2013-10-02T16:55:58.403 に答える