如何使用以下规则删除两个目录?
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]
目前,友好网址已成功输出至http://mysite.com/subdir/landingpage/1/packages/vic
。
我希望它看起来像:http://mysite.com/subdir/packages/vic
有什么想法吗?
答案 0 :(得分: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中缺少两个路径节点:
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]
该规则将采用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
和BAR
。但是由于URI中没有其他内容可以从中提取,因此无法从URI中获取这些参数。如果它们不是URI的一部分,则没有其他内容可以从中提取它们。