0

这是我的网址

http://test.aDomain.com/x-61bff
http://test.aDomain.com/x-ssmJhs54as65d4
http://test.aDomain.com/x-115545454

我的重写规则

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

RewriteRule ^create-account create-account.php [L]
RewriteRule ^account account.php [L]
RewriteRule ^impress impress.php [L]


RewriteRule ^(x\-[a-zA-Z0-9]+) redirect.php?code=$1 [L]

结果是

http://test.aDomain.com/redirect.php 

但为什么?它应该是

http://test.aDomain.com/redirect.php?code=x-61bff

我不明白...有人可以帮忙吗?

4

1 回答 1

1

主要是因为你弄错了正则表达式:

  1. /主机名和路径之间的实际上路径的一部分(例如,它是/x-61bff代替x-61bff)。但是,您的正则表达式x在一开始只匹配 a ,因此/x-61bff永远不会匹配。

  2. 减号在方括号内仅具有特殊含义(例如[A-Z]);在外面它只是另一个字符,没有必要逃避它

所以你的重写规则真的应该看起来像:

RewriteRule ^/(x-[a-zA-Z0-9]*) redirect.php?code=$1 [L]
于 2013-07-16T12:05:26.813 回答