简短问题:什么正则表达式语句将匹配URL上的参数但不匹配子文件夹?例如,匹配google.com?parameter
但不匹配google.com/subdomain
长问题:我正在重定位网站上的几个网址。
我想要ilovestarwars.com/page2
的请求重定向ilovestarwars.com/forceawakens
我设置了这个重定向,它大部分时间都很好用。问题是有URL参数时。例如,如果有人使用跟踪链接的电子邮件程序发送URL。然后ilovestarwars.com/page2
在发送后会ilovestarwars.com/page2?parameter=trackingcode123
变为ilovestarwars.com/page2(.*)
,这会在我的网站上产生404,因为它正在寻找确切的网址。
没问题,我会使用正则表达式。所以我现在重新使用ilovestarwars.com/page2/mistake
并且它很好地接受所有参数,不再有404s。
然而,为了将来证明我的工作,我担心,如果有人在page2文件夹中添加内容会发生什么?例如page2(.*?)/
他们不应该,但如果他们这样做,他们将永远地想出它为什么重定向。
所以我的问题是,如何创建一个匹配参数但拒绝子文件夹的正则表达式语句?
我按照建议in this answer尝试#include <stdio.h>
int main()
{
int grade;
int r=0;
while(r != 1)
{
scanf("%i", &grade);
switch(grade)
{
case 10:
case 9:
printf("Your grade is an A\n");
r=1
break;
case 8:
printf("Your grade is a B\n");
r=1
break;
case 7:
printf("Your grade is a C\n");
r=1
break;
case 6:
printf("Your grade is a D\n");
r=1
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
printf("Your grade is an F\n");
r=1
break;
default:
printf("Invalid score, please re-enter\n");
break;
}
}
return 0;
}
,但https://www.regex101.com/说斜杠是未转义的分隔符。
背景信息as suggested here,我正在使用Wordpress和Redirection plugin。这个is the article会覆盖我设置的初始重定向。
答案 0 :(得分:1)
您问题的直接答案如下:^/([^?&/\]*)(.*)$
这假设字符串从第一个/
开始(如果没有,则删除/
后面的^
)。在第一个捕获组中,您将获得页面名称(在示例URL的情况下为page2),在第二个捕获组中,您将获得URL的剩余部分(以下其中一个字符之后的任何内容:{{1} },?
,&
,/
)。如果您不关心第二个捕获组,请使用\
间接答案是你不这样做。相反,文件夹^/([^?&/\]*).*$
中应该有一个索引页面,它使用301 redirect重定向到正确的页面。静态地做这件事会更有意义。我知道你可能没有那么多控制你的网页,因为它是Wordpress,在这种情况下,前一个答案应该适用于给定的插件。