如何在htaccess中允许点(。)?

时间:2017-05-29 19:08:45

标签: php apache .htaccess mod-rewrite

这是我的htaccess文件,由于某种原因,此规则:RewriteRule ^ profile /([^ /] +)$ ./profile.php?name = $ 1不允许链接中的点。它允许任何其他符号,但不允许点(。)。我该如何解决这个问题?

Options -MultiViews -Indexes
RewriteEngine On

RewriteCond %{HTTP:VIA}                 !^$ [OR]
RewriteCond %{HTTP:FORWARDED}           !^$ [OR]
RewriteCond %{HTTP:USERAGENT_VIA}       !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR}     !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION}    !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION}   !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP}      !^$
RewriteRule ^(.*)$ - [F]

DirectorySlash On

ErrorDocument 404 /404.php
ErrorDocument 403 /404.php
ErrorDocument 502 /brb.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} (.+)/$

RewriteCond %{THE_REQUEST} /profile\?name= [NC]
RewriteRule ^ - [L]


RewriteRule ^profile/([^/]+)$ ./profile.php?name=$1 


RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteRule ^([^/.]+)\.php - [F,L,R=404]
RewriteRule ^([^/.]+)$ $1.php [L]

在我的网站上,用户可以注册任何名称(因此任何字符)。 但是,让我说我的虚构名字是" Mr.BoogieMan。",我的个人资料的链接应该是www.website.com/profile/Mr.BoogieMan。但由于圆点在我的名下,htaccess不会让它通过。

1 个答案:

答案 0 :(得分:3)

点(。)是正则表达式中的特殊字符,表示“任何字符”。要使用点(。),您必须像这样逃避它:

\.