0

我的网站上有这些链接:

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>

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

4

2 回答 2

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 括号中的内容。

于 2013-02-10T17:51:41.953 回答
0

先在谷歌上搜索。google 上显示的 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 也将完成这项工作。在问他们之前,只需谷歌搜索。

于 2013-02-10T03:16:02.973 回答