你有你现有的规则,这很好:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^/subdir/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /subdir/jadehttp.dll?Www_MySite&Action01=$1&H04=$2&cats=$3&states=$4 [L,NC]
然后在它们后面添加这些以说明 URL 中缺少 2 个路径节点:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^/subdir/([^/]*)/([^/]*)$ /subdir/jadehttp.dll?Www_MySite&cats=$1&states=$2 [L,NC]
该规则将接受一个 URL 请求,http://mysite.com/subdir/packages/vic
并在内部将其重写为/subdir/jadehttp.dll?Www_MySite&cats=packages&states=vic
. Action01和H04参数因此丢失。
如果它必须获取 Action01 和 H04 的参数但从新传递的 url 中隐藏,你能告诉我它会是什么样子吗?
您可以嵌入一些默认值,例如:
RewriteRule ^/subdir/([^/]*)/([^/]*)$ /subdir/jadehttp.dll?Www_MySite&Action01=FOO&H04=BAR&cats=$1&states=$2 [L,NC]
将FOO
and替换为BAR
一些默认值。但是由于 URI 中没有其他内容可供提取,因此您无法从 URI 中获取这些参数。如果它们不是 URI 的一部分,则没有其他东西可以从中提取它们。