重定向?catid = 0& id =使用Regex和.htaccess的URL的一部分

时间:2016-02-10 09:14:47

标签: regex .htaccess

我想替换:

https://www.domain.com/?catid=0&id=6330

人:

https://www.domain.com/artigos/6330

使用.htaccess

这就是我正在尝试的:

RewriteRule ^?catid=0&id=(.*)$ /artigos/$1 [R=301,L]

但是给了我一个500 internal server error

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

引用documentation

  

匹配什么?

     

在VirtualHost上下文中,最初将匹配模式   主机名和端口之后以及查询之前的URL部分   字符串(例如“/app1/index.html”)。

     

在Directory和htaccess上下文中,Pattern最初会是   删除前缀后,与文件系统路径匹配   将服务器引导到当前的RewriteRule(例如“app1 / index.html”或   “index.html”取决于定义指令的位置。

     

如果您希望与主机名,端口或查询字符串匹配,请使用   带有%{HTTP_HOST},%{SERVER_PORT}或。的RewriteCond   %{QUERY_STRING}个变量。

您要匹配的内容是查询字符串的一部分!

答案 1 :(得分:1)

您无法在RewriteRule指令中与查询字符串进行匹配。要匹配查询字符串,您需要使用RewriteCond。

RewriteCond %{THE_REQUEST} /\?catid=0&id=([0-9]+) [NC]
RewriteRule ^ /artigost/%1? [NC,L,R]

重写目标末尾的空问号非常重要,因为它会丢弃旧的查询字符串。