4

私はこのmod_rewriteビジネスにかなり慣れていませんが、次のことを実行できるルールが必要です。

localhost/module_name/ -> localhost/index.php?module=module_name
localhost/module_name/module_action -> localhost/index.php?module=module_name&action=module_action
localhost/module_name/module_action/parm1 -> localhost/index.php?module=module_name&action=module_action&parm_1=parm1
localhost/module_name/module_action/parm1/parm2 -> localhost/index.php?module=module_name&action=module_action&parm_1=parm1&parm_2=parm2

等々。module_nameとmodule_actionを機能させることができましたが、モジュールのみまたは複数のパラメーターで機能させる方法がわかりません。これは私が現在持っているものです:

RewriteEngine on
RewriteRule ([a-zA-Z]+)/([a-zA-Z]+) index.php?module=$1&action=$2
RewriteRule ([a-zA-Z]+)/([a-zA-Z]+)/([a-zA-Z]+)$ index.php?module=$1&action=$2&parm=$3

最初のルールは機能しているように見えますが、2番目のルールでは壊れています。

どんな助けでも本当にありがたいです。

4

1 に答える 1

8

あなたはこれを試すことができます:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  ^/([^/]+)/?([^/]*)?/?([^/]*)?/?([^/]*)?/?   [NC]
RewriteRule .*    index.php?key1=%1&key2=%2&key3=%3&key4=%4  [L]

静かにマップ

http://localhost/val1/まで

http://localhost/val1/val2/val3/val4

に:

http://localhost/index.php?key1=val1まで

http://localhost/index.php?key1=val1&key2=val2&key3=val3&key4=val4

置換URLの着信valN値は空ではありません。

index.php固定文字列と見なされます。

[R=301,L]永続的なリダイレクトの場合は、[L]をに置き換えます。

パラメータの最大数=4。

于 2013-01-31T09:29:10.053 に答える