无法search“。” 使用htaccess

我正在build立一个网站(理想情况下),允许用户访问其他用户的网页,其格式为“www.mysite.com/ThisLanham”,其中“ThisLanham”是用户名。 用户名以字母开头,可以由任意字母数字字符和下划线,连字符或句点组成。

到目前为止,当我忽略使用周期字符时,redirect已经完美运行。 以下代码处理该请求:

RewriteRule ^([a-zA-Z][0-9a-zA-Z-_]*)/?$ Page/?un=$1 [NC,L] 

不过,我已经尝试了很多方法来检查期间,但都导致500内部服务器错误。 以下是我的一些尝试:

 RewriteRule ^([a-zA-Z][0-9a-zA-Z-\_\\.]\*)/?$ Page/?un=$1 [NC,L] RewriteRule ^([0-9a-zA-Z-\_\\.]\*)/?$ Page/?un=$1 [NC,L] RewriteRule ^([a-zA-Z].\*)/?$ Page/?un=$1 [NC,L] RewriteRule ^(.\*)/?$ Page/?un=$1 [NC,L] 

也试过…

 RewriteCond $1 != index.php RewriteRule ^([az][0-9a-z-_.]*)/?$ Page/?un=$1 [NC,L] 

我的备份计划不再允许用户在他们的用户名中包含句点,但是我更愿意find一个解决scheme。 有任何想法吗?

http://articles.sitepoint.com/article/apache-mod_rewrite-examples

 RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] RewriteRule .? http://www.example.com%{REQUEST_URI} [R=301,L] 

在这里,为了表示{HTTP_HOST}是一个Apachevariables,我们必须在其前面添加一个%字符。 正则expression式以! 字符,如果它与模式不匹配,将导致条件成立。 我们还必须避免使用点字符,以便匹配字面点而不是任何字符,就像点元字符一样。 我们还添加了No Case标志来使这个操作不区分大小写。

也许这有帮助?

根据Perl正则expression式(这是Apache使用的)的文档 ,

 RewriteRule ^([a-zA-Z][0-9a-zA-Z\-_.]*)/?$ Page/?un=$1 [NC,L] 

要么

 RewriteRule ^([a-zA-Z][0-9a-zA-Z_.-]*)/?$ Page/?un=$1 [NC,L] 

应该pipe用。 当字符类是字符类的一部分时(即在括号[]之间),句点被视为一个真实的句点,而不是元字符,所以在这种情况下,你不需要转义它。

另一方面,连字符在字符类中具有特殊的含义(除非是类中的第一个或最后一个字符,参见上面的第二个例子)。