htaccess 重定向如果参数存在不工作
htaccess redirect if parameter exists not working
如果存在特殊参数,我正在尝试重写任何 URL。
所以这会发生:
发件人:www.example.com/somepage/someother/?entryValue=somevalue
收件人:www.example.com/somepage/someother/?product=test&special=12345ls&linkSource=website
我尝试跟随,但它没有按预期工作:
此代码添加 var/www/*
而不是 link
www.example.com/var/www/web6/htdocs/example.com/index.php/*
RewriteCond %{QUERY_STRING} (^|&)entryValue=somevalue
RewriteRule ^(.*)$ /?product=test&special=12345ls&linkSource=website [L,R]
此代码删除路径:
RewriteCond %{QUERY_STRING} (^|&)entryValue=somevalue
RewriteRule ^(.*)$ /?product=test&special=12345ls&linkSource=website [L,R]
我怎样才能让它发挥作用?
RewriteCond %{QUERY_STRING} (^|&)entryValue=somevalue
RewriteRule ^(.*)$ /?product=test&special=12345ls&linkSource=website [L,R]
您需要在 substitution 字符串的开头包含斜杠前缀。像这样:
RewriteRule ^(.*)$ //?product=test&special=12345ls&linkSource=website [L,R]
没有斜杠前缀(RewriteRule
模式 匹配的 URL 路径不包含斜杠前缀)它被视为 relative 和目录前缀(即 /var/www/...
)将被添加回去并导致您看到的格式错误的重定向。
更新:
but this ends up with "index.php" and the path is lost
您将指令放在了错误的位置并产生了冲突。 mod_rewrite 指令的顺序很重要。
一般来说,像这样的外部重定向需要在任何内部重写(如前端控制器)之前接近 .htaccess
文件的顶部。
如果存在特殊参数,我正在尝试重写任何 URL。
所以这会发生:
发件人:www.example.com/somepage/someother/?entryValue=somevalue
收件人:www.example.com/somepage/someother/?product=test&special=12345ls&linkSource=website
我尝试跟随,但它没有按预期工作:
此代码添加 var/www/*
而不是 link
www.example.com/var/www/web6/htdocs/example.com/index.php/*
RewriteCond %{QUERY_STRING} (^|&)entryValue=somevalue
RewriteRule ^(.*)$ /?product=test&special=12345ls&linkSource=website [L,R]
此代码删除路径:
RewriteCond %{QUERY_STRING} (^|&)entryValue=somevalue
RewriteRule ^(.*)$ /?product=test&special=12345ls&linkSource=website [L,R]
我怎样才能让它发挥作用?
RewriteCond %{QUERY_STRING} (^|&)entryValue=somevalue RewriteRule ^(.*)$ /?product=test&special=12345ls&linkSource=website [L,R]
您需要在 substitution 字符串的开头包含斜杠前缀。像这样:
RewriteRule ^(.*)$ //?product=test&special=12345ls&linkSource=website [L,R]
没有斜杠前缀(RewriteRule
模式 匹配的 URL 路径不包含斜杠前缀)它被视为 relative 和目录前缀(即 /var/www/...
)将被添加回去并导致您看到的格式错误的重定向。
更新:
but this ends up with "index.php" and the path is lost
您将指令放在了错误的位置并产生了冲突。 mod_rewrite 指令的顺序很重要。
一般来说,像这样的外部重定向需要在任何内部重写(如前端控制器)之前接近 .htaccess
文件的顶部。