0

私はIISの世界からApacheに来ていますが、書き換えルールについて助けていただければ幸いです。

この相対パスが必要です:

/index.php?go=order&id=12345

次のように書き直されます:

/go/order/id/12345

また、さらにパラメータがある場合は、パス形式に変換する必要があります。

/index.php?go=order&id=12345&action=process

になります

/go/order/id/12345/action/process

どうすればこれを達成できますか?ご入力いただきありがとうございます。

4

1 に答える 1

1

これを仮想ホスト構成に入れてみてください:

RewriteEngine On

# Start converting query parameters to path
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?[^\ ]+
RewriteCond %{QUERY_STRING} ^([^=]+)=([^&]+)&?(.*)$
RewriteRule ^(.*)$ $1/%1/%2?%3 [L]

# done converting, remove index.php and redirect browser
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?[^\ ]+
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^/index.php/(.*)$ /$1 [R=301,L]

# internally rewrite paths to query strings
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteRule ^/([^/]+)/([^/]+)/?(.*) /$3?$1=$2 [L,QSA]

# No more path, rewrite to index.php
RewriteRule ^/$ /index.php [L]

これらのルールにより、ブラウザのようhttp://yourdomain.com/index.php?a=b&1=2&z=xにURLを入力すると、ブラウザはにリダイレクトされhttp://yourdomain.com/a/b/1/2/z/xます。見栄えの良いURLが要求されると、2番目のルールセットが内部でURLをに書き換えます/index.php?a=b&1=2&z=x。これらのルールを(ドキュメントルートの)htaccessファイルに入れたい場合は、RewriteRule'sの先頭のスラッシュをすべて削除する必要があります。したがって、最後の3つのルールに含まれている^/必要があります。^

http://yourdomain.com/index.phpクエリ文字列なしで単にに移動すると、何も書き換えられないことに注意してください。

于 2012-07-29T04:28:15.160 に答える