2013-02-10 96 views
0

我在我的網站這些鏈接:鏈接重定向使用htaccess的重寫規則

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

www.example.org/folder /files.php?force &文件= 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> 

但不工作! 有幫助嗎?

+1

請列出你已經嘗試過你的重寫規則。這是一個非常常見的問題,你可以通過在這裏搜索找到許多答案 - 如果你實際上已經嘗試過某些東西並且被卡住了,那麼只發佈一個問題。 – 2013-02-10 03:39:21

+0

我試圖 RewriteEngine敘述上 重寫規則^文件/(.*)$ /files.php?file=$1 [R = 301,L] 但不工作! – 2013-02-10 03:45:36

回答

1

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

有此規則的兩個問題...第一,你所匹配需要首先出現在規則,那麼你正在重寫第二齣現 - 你有倒退。

一旦逆轉,雖然,你碰到的第二個問題 - 你不能在一個重寫規則匹配查詢字符串,你需要一個匹配的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中的括號內容相匹配。

+0

非常感謝你,它工作正常 – 2013-02-12 02:22:15