使用htaccess重写包含句点符号的URL

时间:2012-04-13 11:16:28

标签: .htaccess

您好我试图将我的网址www.example.com/user.php?user=user.name重写为www.example.com/user.name

但是我收到了一条错误消息,我认为这个点搞砸了......这是我的规则

RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?user=$1

由于

3 个答案:

答案 0 :(得分:4)

使用此RewriteRule:

# 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]

如果您不使用这些RewriteCond行,那么即使style.csssite.jsfavicon.ico等文件也会被转发到user.php,而不会在浏览器。

答案 1 :(得分:0)

请改用此模式:^([a-zA-Z0-9\_\-\.]+)$

RewriteRule ^([a-zA-Z0-9\_\-\.]+)$ user.php?user=$1

答案 2 :(得分:0)

我认为应该有效:

RewriteRule ^([a-zA-Z0-9_\-.]+)$ user.php?user=$1

(刚刚添加了点并在可能的字符列表中转义了破折号)

另外,不要忘记预先放置RewriteCond以避免无限循环。类似的东西:

RewriteCond %{REQUEST_FILENAME} !^user\.php$

请注意,这假设您没有名称为user.php的用户;)