.htaccess RewriteRule,带有额外的查询字符串

时间:2019-03-25 11:56:58

标签: .htaccess

我已经更改了某些URL的路径,我想使用额外的查询字符串?industry=将它们重定向到一些新的URL

Old url: e.g. https://domain.ext/skills/keywords/list.php?q=account+manager
https://domain.ext/skills/keywords/list.php?q=assistant

New url: e.g.
https://domain.ext/skills/keywords/list.php?industry=human-resources&q=account+manager

https://domain.ext/skills/keywords/list.php?industry=banking&q=account+manager

https://domain.ext/skills/keywords/list.php?industry=banking&q=assistant

如您所见,新的URls包含一个新的查询参数industry=,该查询参数可以具有不同的行业。 因此,如何查询查询?q=account+manager是否存在新的URL,然后将旧的URL重定向到与&q=account+manager匹配的新URL之一? 我已经使用RewriteRule来研究.htaccess,但是还没有找到正确的重定向。如果有人可以分享一些想法。谢谢。

1 个答案:

答案 0 :(得分:0)

不确定您要做什么,但我将把这个问题作为一个简单的重写规则示例的要求。根据您要实现的目标,可以使用几种方法。

.htaccess文件中的代码可能是这样的:

# essential
Options +FollowSymLinks
RewriteEngine On
# Here a simple rule, the link ending with assitant will be sent to list.php as the q parameter
RewriteRule ^skills/keywords/assistant$ list.php?q=assistant
# You may use variables and Regex, such as $1, $2, $3 in this case to receive the values 
# in the parentheses for the three parameters
RewriteRule ^(en/fr/es)/(keywords)/([\/\.\w_-]{3,})$ list.php?lang=$1&section=$2&q=$3 [L,R=301,NC]

标记是这些:

  • NC =否
  • R = 301 =返回301(永久重定向)代码,而不是 302(临时)(用于SEO)
  • L =要执行的最后一条规则, 接下来的那些会被忽略。

我没有检查此代码是否有效,在服务器上进行测试时,如果出现问题,您将遇到空白页。另外,如果使用标志,请确保逗号后没有空格。

此页面对此进行了很好的解释:https://httpd.apache.org/docs/trunk/en/rewrite/intro.html