0

我将如何使用以下规则删除两个目录?

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 成功输出到http://mysite.com/subdir/landingpage/1/packages/vic. 我希望它看起来像:有http://mysite.com/subdir/packages/vic 什么想法吗?

4

1 回答 1

0

你有你现有的规则,这很好:

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. Action01H04参数因此丢失。

如果它必须获取 Action01 和 H04 的参数但从新传递的 url 中隐藏,你能告诉我它会是什么样子吗?

您可以嵌入一些默认值,例如:

RewriteRule ^/subdir/([^/]*)/([^/]*)$ /subdir/jadehttp.dll?Www_MySite&Action01=FOO&H04=BAR&cats=$1&states=$2 [L,NC]

FOOand替换为BAR一些默认值。但是由于 URI 中没有其他内容可供提取,因此您无法从 URI 中获取这些参数。如果它们不是 URI 的一部分,则没有其他东西可以从中提取它们。

于 2012-10-19T05:16:37.573 回答