Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重定向?catid=0&;id=使用Regex和.htaccess的URL的一部分_Regex_.htaccess - Fatal编程技术网

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

重定向?catid=0&;id=使用Regex和.htaccess的URL的一部分,regex,.htaccess,Regex,.htaccess,我想替换: https://www.domain.com/?catid=0&id=6330 作者: 使用.htaccess 这就是我正在尝试的: RewriteRule ^?catid=0&id=(.*)$ /artigos/$1 [R=301,L] 但是给了我一个500内部服务器错误 如何解决此问题?引用: 什么是匹配的 在VirtualHost上下文中,模式最初将与 URL中位于主机名和端口之后、查询之前的部分 字符串(例如“/app1/index.html”) 在目录和

我想替换:

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

使用
.htaccess

这就是我正在尝试的:

RewriteRule ^?catid=0&id=(.*)$ /artigos/$1 [R=301,L]
但是给了我一个
500内部服务器错误

如何解决此问题?

引用:

什么是匹配的

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

在目录和htaccess上下文中,模式最初是 删除前缀后,与文件系统路径匹配 将服务器引导到当前重写规则(例如“app1/index.html”或 “index.html”,具体取决于指令的定义位置)

如果希望匹配主机名、端口或查询字符串,请使用 使用%{HTTP\u HOST}、%%{SERVER\u PORT}或 %分别为{QUERY_STRING}个变量


您试图匹配的内容是查询字符串的一部分

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

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

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

您可以向我们展示apache配置中的更多相关行吗?例如,您是否启用了mod_rewrite等?@neuhaus是的,我已启用mod_rewrite,并在此joomla站点上有其他工作重定向您是否检查了错误日志?需要对“?”进行转义。但它不会像那样工作。看到下面我的答案。@neuhaus谢谢,我试过重写规则^%{?catid=0&id=}(.*)$/artigos/$1[R=301,L]和重写规则^{?catid=0&id=}(.*)$/artigos/$1[R=301,L],但我还是得到了404,再次检查下面的答案。您需要将RewriteCond与%{QUERY_STRING}Lol一起使用,差不多就在那里了(只需删除artigos后面的t即可)
RewriteCond %{THE_REQUEST} /\?catid=0&id=([0-9]+) [NC]
RewriteRule ^ /artigost/%1? [NC,L,R]