0

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

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

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

谢谢

4

3 回答 3

4

使用这个重写规则:

# 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并且不会在浏览器中呈现。

于 2012-04-13T11:53:58.073 回答
0

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

RewriteRule ^([a-zA-Z0-9\_\-\.]+)$ user.php?user=$1
于 2012-04-13T11:23:23.870 回答
0

我认为这应该有效:

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

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

另外,不要忘记RewriteCond预先放置一个以避免无限循环。就像是:

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

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

于 2012-04-13T11:24:55.973 回答