使用htaccess RewriteRule链接重定向

时间:2013-02-10 03:01:36

标签: .htaccess mod-rewrite redirect url-rewriting rewrite

我的网站上有这些链接:

www.example.org/folder/files.php?file=folder/document.pdf

www.example.org/folder/files.php?force&file=2009.pdf


我希望重定向到:

www.example.org/files/folder/document.pdf

www.example.org/files/2009.pdf

我试过了:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^files/(.*)$ /files.php?file=$1 [R=301,L]  
</IfModule>

但不起作用! 有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

RewriteRule ^files/(.*)$ /files.php?file=$1 [R=301,L]

此规则存在两个问题:首先,您要匹配的内容需要首先显示在规则中,然后您重写的内容显示为第二个 - 您有相反的内容。

一旦你反过来,你会遇到第二个问题 - 你无法匹配RewriteRule中的查询字符串,你需要在RewriteCond中匹配它们:

要匹配www.example.org/folder/files.php?force&file=2009.pdf并将其重定向到www.example.org/files/2009.pdf,您可以执行以下操作:

RewriteCond %{QUERY_STRING} ^force&file=(.*)$ [NC]
RewriteRule ^folder/files.php$ /files/%1 [R=301, L]

%1匹配RewriteCond中括号中的内容。

答案 1 :(得分:0)

首先在谷歌上搜索。谷歌为htaccess显示的第一件事是htaccess重定向。我认为 Redirect /olddirectory/oldfile.html http://example.com/newdirectory/newfile.html(与空格相同的行)应该有效。转到http://kb.mediatemple.net/questions/242/How+do+I+redirect+my+site+using+a+.htaccess+file%3F。 Php也会做这项工作。在询问之前先搞砸一下。