Regex 使用htaccess重写包含句点符号的URL
您好,我正在尝试将我的urlRegex 使用htaccess重写包含句点符号的URL,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,您好,我正在尝试将我的urlwww.example.com/user.php?user=user.nameaswww.example.com/user.name 但是我收到了一条错误信息,我想这个点把事情搞砸了。。这是我的规则 RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?user=$1 谢谢改用这个模式:^([a-zA-Z0-9\\\\\-\.]+)$ 改用此模式:^([a-zA-Z0-9\\\\-\.]+)$ 我认为应该这样做: RewriteRule ^
www.example.com/user.php?user=user.name
aswww.example.com/user.name
但是我收到了一条错误信息,我想这个点把事情搞砸了。。这是我的规则
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?user=$1
谢谢改用这个模式:
^([a-zA-Z0-9\\\\\-\.]+)$
改用此模式:
^([a-zA-Z0-9\\\\-\.]+)$
我认为应该这样做:
RewriteRule ^([a-zA-Z0-9_\-.]+)$ user.php?user=$1
(刚刚在可能的字符列表中添加了点并转义了破折号)
另外,不要忘了预先放置一个RewriteCond
,以避免无限循环。比如:
RewriteCond %{REQUEST_FILENAME} !^user\.php$
注意,这假设您没有名为user.php;)的用户 我认为这应该行得通:
RewriteRule ^([a-zA-Z0-9_\-.]+)$ user.php?user=$1
(刚刚在可能的字符列表中添加了点并转义了破折号)
另外,不要忘了预先放置一个RewriteCond
,以避免无限循环。比如:
RewriteCond %{REQUEST_FILENAME} !^user\.php$
注意,这假设您没有名为user.php;)的用户 使用此重写规则:
# 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
# If the request is not for a valid link
RewriteCond %{REQUEST_FILENAME} !-l
# forward to user.php in a Query parameter user
RewriteRule ^([a-z0-9_.-]+)$ user.php?user=$1 [L,NC,QSA]
如果不使用这些重写条件行,则即使是style.css
、site.js
、favicon.ico
等文件也将转发到user.php
,并且不会在浏览器中呈现。使用此重写规则:
# 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
# If the request is not for a valid link
RewriteCond %{REQUEST_FILENAME} !-l
# forward to user.php in a Query parameter user
RewriteRule ^([a-z0-9_.-]+)$ user.php?user=$1 [L,NC,QSA]
如果不使用这些重写条件行,则即使是
style.css
、site.js
、favicon.ico
等文件也会转发到user.php
,并且不会在浏览器中呈现。您需要先设置RewriteCond
您需要设置RewriteCond
first@anubhava太棒了,伙计。谢谢您给出的规则对于理解htaccess如何正常工作非常有用。生命和时间节约回答。@anubhava真棒,伙计。谢谢您给出的规则对于理解htaccess如何正常工作非常有用。生活和时间节省的答案。