我使用htaccess创建了一个网站,并且通过在浏览器中显示错误而无法正常工作:
The page isn't redirecting properly
重写规则行是:
RewriteRule ^([a-zA-Z0-9-_\.]+)$ index.php?user=$1 [NC,L]
我使用它来获取get变量中的用户配置文件,如果点字符被删除,问题似乎就解决了:
RewriteRule ^([a-zA-Z0-9-_]+)$ index.php?user=$1 [NC,L]
但我需要用户名格式来包含点字符。
它应如何运作的示例:
http://www.example.dev/john.88 >>> index.php?user=john.88
http://www.example.dev/johnsmith >>> index.php?user=johnsmith
http://www.example.dev/john_smith >>> index.php?user=john_smith
提前致谢。
答案 0 :(得分:1)
使用DOT模式,它确实会导致无限循环,因为重写的URI /index.php
也匹配您的模式。
要解决此问题,您需要RewriteCond
:
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\w.-]+)/?$ index.php?user=$1 [QSA,L]
另请注意,使用\w
相当于[a-zA-Z0-9_]