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

第一条规则似乎有效,但它在第二条规则中分崩离析。

任何帮助将非常感激。

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被认为是固定字符串。

对于永久重定向,将 [L] 替换为[R=301,L],

最大参数数 = 4。

于 2013-01-31T09:29:10.053 回答