我的网站上有这些链接:
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>
但不起作用! 有什么帮助吗?
答案 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也会做这项工作。在询问之前先搞砸一下。