您好我试图将我的网址www.example.com/user.php?user=user.name
重写为www.example.com/user.name
但是我收到了一条错误消息,我认为这个点搞砸了......这是我的规则
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?user=$1
由于
答案 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.css
,site.js
,favicon.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的用户;)