.htaccess重写规则不允许'和@

时间:2011-02-03 11:48:05

标签: php .htaccess

我有一个重写规则,将domain.co.uk/member.php?x=$member重写为domain.co.uk/$member

看起来像这样:

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

我试图将'和@添加到方括号中,但后来我得到500内部服务器错误。我需要这些字符用于人们的用户名

我该怎么做?

2 个答案:

答案 0 :(得分:1)

@用于在URI字符串中指定用户和密码,如下所示:

http://user:passw...@host/path

您需要对其进行urlencode:%40

您的路径将是:/user%40foo.com或类似的内容

这应该有效

答案 1 :(得分:1)

来自RFC 1738

  

字符“;”,“/”,“?”,“:”,   “@”,“=”和“&”是人物   这可能是特殊的保留   在计划中的含义。没有其他   字符可以在a中保留   方案

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

您应该做什么:

  • 将“@”编码为%40
  • 像.htaccess一样逃避单引号:\'