Apache 为什么这个重写规则不起作用?

Apache 为什么这个重写规则不起作用?,apache,mod-rewrite,Apache,Mod Rewrite,我正试图从 http://domain.site.com/folder/profile.php?name=some_person 到更干净的URL http://sub1.site.com/folder/some_person 在我的.htaccess中,我有相关部分: #Prevent from overriding actual directories and files RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT

我正试图从

http://domain.site.com/folder/profile.php?name=some_person
到更干净的URL

http://sub1.site.com/folder/some_person
在我的.htaccess中,我有相关部分:

#Prevent from overriding actual directories and files

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f 

# Rewrite user URLs
#   Input:  folder/NAME/
#   Output: profile.php?name=NAME
RewriteRule ^folder/(\w+)/?$ profile.php?name=$1
但是当我去

http://sub1.site.com/folder/fred
例如,当fred是有效用户时,我得到404页面未找到错误


我做错了什么?谢谢

将最后一行更改为:

RewriteRule ^folder/(\w+)/?$ profile.php?name=$1

顺便说一句,你没有在结果中提到域名,你当前的域名和结果域名是不同的,我想这是一个错误的输入,但如果你认为不是,那么请尝试以下规则

试试这个:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{HTTP_HOST} ^sub1.site.com$
RewriteCond %{REQUEST_URI} ^/folder
RewriteRule ^/folder/(\w+)/?$ http://domain.site.com/folder/profile.php?name=$1 [QSA]
注: 如果您认为域是相同的,那么只需从规则中删除该域

您可以在此链接中验证重写规则:

很抱歉,这是一个输入错误…这就是我的问题,我仍然收到错误1您可以编辑服务器配置吗?如果是-启用重写调试RewriteLoglevel 9并检查重写日志以了解详细信息。2尝试用[a-zA-Z\\替换w+,如果需要,添加其他可接受的字符