我目前在.htaccess文件中使用以下行来重写几个子目录网址到我网站的根目录:
RewriteRule ^work(.*)$ $1
RewriteRule ^why-me(.*)$ $1
RewriteRule ^prices(.*)$ $1
RewriteRule ^contact(.*)$ $1
但是,有没有办法在一行中表达这一点呢?
我试过了:
RewriteRule ^(work|why-me|prices|contact)(.*)$ $1
但是(不出所料,由于我在正则表达式方面完全缺乏知识),它不起作用并导致所有这些URL给我404错误。
答案 0 :(得分:0)
您可以使用非捕获组,因为$1
现在代表所有目录名称:
RewriteRule ^(?:work|why-me|prices|contact)(.*)$ $1 [L,NC]
答案 1 :(得分:0)
RewriteRule "^(work|why-me|prices|contact)(.*)$" "$2"
或
RewriteRule "^(?:work|why-me|prices|contact)(.*)$" "$1"
$ 1指的是第一个捕获组,它是您在第一组括号中定义的任何组。由于您在括号内创建了另一个集合,因此$ 1不再引用后面的内容,而是包含work
,why-me
等。
第一个解决方案需要2美元,因为$ 1将是:work,why-me等等,$ 2将是其后的任何内容。
第二个解决方案是通过对第一个组使用非捕获组来工作(它没有编号),因此(.*)
将它放入$ 1而不是$ 2。