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

时间:2011-09-15 18:58:33

标签: apache mod-rewrite

我想从

开始
http://domain.site.com/folder/profile.php?name=some_person

更清晰的网址

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页面未找到错误

我做错了什么?谢谢!

2 个答案:

答案 0 :(得分:0)

将您的最后一行更改为:

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

答案 1 :(得分:0)

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

试试这个:

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]

注意: 如果您认为域名相同,则只需从规则中删除域名。

您可以在此链接中验证您的重写规则: http://martinmelin.se/rewrite-rule-tester/