这是我的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不会让它通过。
答案 0 :(得分:3)
点(。)是正则表达式中的特殊字符,表示“任何字符”。要使用点(。),您必须像这样逃避它:
\.