2011-02-03 34 views
1

我有一个重写domain.co.uk/member.php?x=$member到domain.co.uk/$member的.htaccess重写规则不会允许“,并@

它看起来重写规则像这样:

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9_-]+)$ member.php?x=$1 
RewriteRule ^([a-zA-Z0-9_-]+)/$ member.php?x=$1 

我一直在努力,只是添加“和@于方括号但后来我得到一个500内部服务器错误。我需要这些字符为人民用户名

我该怎么做?

+1

题外话:添加``将使尾随`/`可选,而无需编写两条线:`^([A- ZA-Z0-9 _-] +)/ $` – jensgram 2011-02-03 12:05:31

回答

1

@用于在一个URI字符串这样来指定用户名和密码:

http://user:[email protected]/path

您需要进行urlencode它:%40

你的路径将是:/user%40foo.com或像这样

这应该工作

1

RFC 1738

字符 “;” ,“/”,“?”,“:”, “@”,“=”和“&”是字符 ,它可以保留用于特殊的 ,意思是在一个方案内。在 方案内不能保留其他 字符。

和:

因此,只有字母数字,特殊字符 “!$ -_ + *”()“,并
用于其 保留目的的保留字符可以是在URL中使用未编码的

你应该做的:

  • 编码 '@' 到%40
  • 逃逸单引号像在.htaccess像这样:\'