您好我试图将我的网址重写www.example.com/user.php?user=user.name
为www.example.com/user.name
但我收到一条错误消息,我认为这个点把事情搞砸了..这是我的规则
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?user=$1
谢谢
您好我试图将我的网址重写www.example.com/user.php?user=user.name
为www.example.com/user.name
但我收到一条错误消息,我认为这个点把事情搞砸了..这是我的规则
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?user=$1
谢谢
使用这个重写规则:
# 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
并且不会在浏览器中呈现。
请改用此模式:^([a-zA-Z0-9\_\-\.]+)$
RewriteRule ^([a-zA-Z0-9\_\-\.]+)$ user.php?user=$1
我认为这应该有效:
RewriteRule ^([a-zA-Z0-9_\-.]+)$ user.php?user=$1
(只需在可能的字符列表中添加点并转义破折号)
另外,不要忘记RewriteCond
预先放置一个以避免无限循环。就像是:
RewriteCond %{REQUEST_FILENAME} !^user\.php$
请注意,这假设您没有名为 user.php 的用户;)