2012-12-28 85 views
0

我有以下文件:的.htaccess從一個子目錄重寫到另一個

/forums/faq.php - 在http://www.domain.com/forums/faq.php

我想這個文件(通常在faq.php的形式完成電話? FAQ = faqname)被改寫爲:

/faq/faqname - 在http://www.domain.com/faq/faqname

我一直在嘗試下面的.htaccess規則都無濟於事。在我的根目錄的.htaccess:

RewriteRule ^forums/faq.php?faq=(.*)$ faq/$1 [L,R=301] 
RewriteRule ^faq$ faq/ [L,QSA,R=301] 

在我/forums/.htaccess:

RewriteRule ^faq.php?faq=(.*)$ http://www.domain.com/faq/$1 [L,R=301] 

難道我被忽視的東西真的很明顯嗎?我的語法關閉了嗎?

回答

0
  1. 您可以在溝的/forums/ htaccess的規則,這些規則也有超過文檔根規則的優先級。你在兩個地方都不需要他們。

  2. 你的規則將導致重定向循環,如果他們做了你想要的。

你不能對匹配的查詢字符串在RewriteRule,所以第一條規則將不匹配任何東西。你真正想要做的是匹配實際的請求。

# redirect /forums/faq.php?faq=faqname to /faq/faqname 
RewriteCond %{THE_REQUEST} \ /forums/faq\.php\?faq=([^&\ ]+) 
RewriteRule ^forums/faq.php$ /faq/%1? [L,R=301] 

然後,你需要在內部改回

RewriteRule ^faq/(.+)$ /forums/faq.php?faq=$1 [L,QSA] 
相關問題