我想拥有个性化的网址,其中一个人收到邮件,其上有自己的邮件,并将其重定向到通过查询字符串接收其姓名的登录页面
网址就像
mywebsite.com/phx/joe.smith
我想将此流量重定向到
mywebsite.com/youngstown/index.php?first=joe&last=smith
这应该是301重定向,不区分大小写。如果目录是/ phx / firstname / lastnaname,我可以这样做,但我需要在第一个和最后一个之间使用点而不是目录。
到目前为止我所拥有的是
RewriteEngine on
RewriteBase /
RewriteRule ^phx\/([^\/]+)\/([^\/]+)\/? youngstown/index.php?FirstName=$1&LastName=$2 [NC,R=301,L]
RewriteRule ^phx\/([^\/]+)\/? youngstown/index.php?FirstName=$1 [NC,R=301,L]
非常感谢任何帮助!
答案 0 :(得分:2)
首先,您不需要转义斜杠/
。除此之外,你几乎就在那里。主要区别在于\.
与/
,例如
RewriteRule ^phx/(.+?)\.(.+)/?$ youngstown/index.php?first=$1&last=$2 [R,NC,L]
答案 1 :(得分:0)
完整的解决方案可能是:
RewriteEngine on
RewriteRule ^phx/([^./]+)\.([^./]+)/?$ /youngstown/index.php?FirstName=$1&LastName=$2 [NC,R=301,L]
RewriteRule ^phx/([^./]+)/?$ /youngstown/index.php?FirstName=$1 [NC,R=301,L]
正如奥拉夫所说,没有必要逃避斜线。我在这里匹配“不是点或斜线”。同时添加$
来分隔匹配的结尾并删除不需要的RewriteBase
。
替代解决方案
或者你可以使用一个规则,当{not}存在时,它会为LastName
设置一个空参数:
RewriteEngine on
RewriteRule ^phx/([^./]+)(?:\.([^./]+))?/?$ /youngstown/index.php?FirstName=$1&LastName=$2 [NC,R=301,L]