2009-08-26 50 views
0

我有一個網站的根.htaccess文件:如何根據子文件夾中的查詢字符串創建301重定向?

/var/www/mywebsite/htdocs/.htacess 

和我有一些文件

/var/www/mywebsite/htdocs/folder/ 

這是目前的index.php PC = 1234

產生的?

我想將查詢字符串變量中的數字重定向到該文件夾​​中的靜態html頁面。

RewriteRule ^folder/\?pc=1 /folder/filename.html [R=301,L] 

然而,由於有一些這些文件,這將是有用的,如果我可以創建一個.htaccess文件:

我可以在.htacess文件在網站的逐根實現這一目標
/var/www/mywebsite/htdocs/folder/.htaccess 

我的問題是:如何捕獲查詢字符串並相應地從該文件夾重定向?

+0

你能具體談談重定向規則? ?pc = 1 => filename.html,?pc = 2 => some_other_file.html,?pc = 3 => my_other_filename_that_does_not_really_correlate_to_th_number.html或更像?pc = 1 => 1.html,?pc = 2 => 2.html。 – Residuum 2009-08-26 11:36:45

+0

第一招: PC = 1 => filename.html,PC = 2 => some_other_file.html,PC = 3 => my_other_filename_that_does_not_really_correlate_to_th_number.html – Jenski 2009-08-26 11:45:15

回答

2

感謝Residuum和Nerdling。你們給了我一些想法。

這是我結束了。在/var/www/mywebsite/htdocs/folder/.htaccess以下

RewriteEngine On 
RewriteBase /folder 
RewriteCond %{QUERY_STRING} pc=1 
RewriteRule ^$ filename.html? [R=301,L] 

如果我不包括RewriteBase的URL將顯示爲:

www.mywebsite.com/var/www/mywebsite/htdocs/folder/ 

但它正確地表現爲:

www.mywebsite.com/folder/filename.html 

我還必須在其拍攝的一個空白的文件名,即「^ $」重寫規則,然後delcare我想PC = 1去的文件名。

再次感謝渣油,Nerdling

2

的重寫規則爲301前,將是這樣的:

RewriteCond %{QUERY_STRING} MATCH

其中MATCH是要匹配什麼的。最後可以使用[OR]塊中的多個塊。

你可以在Apache's website找到更多的信息。

1

子文件夾中,只使用相對URL:

RewriteEngine On 
RewriteBase /folder 
RewriteRule ^\?pc=1 filename.html [R=301,L] 
RewriteRule ^\?pc=2 someotherfilename.html [R=301,L] 

或者使用的RewriteCond作爲Nerdling說,但使用跳過你的重寫規則,這樣類似:

# this will skip the two line for anything not matching ^folder/\?pc= 
RewriteRule !^folder/\?pc= - [S=2] 
RewriteRule ^folder/\?pc=1 /folder/filename.html [R=301,L] 
RewriteRule ^folder/\?pc=2 /folder/someotherfilename.html [R=301,L] 
# anything else will be interpreted again 

或者使用規則爲終止任何其他解釋:

RewriteRule !^folder/\?pc= - [L] 
RewriteRule ^folder/\?pc=1 /folder/filename.html [R=301,L] 
RewriteRule ^folder/\?pc=2 /folder/someotherfilename.html [R=301,L] 
+0

我已經嘗試使用:??? 或者在你的.htaccess文件夾:? 重寫規則^ \ PC = 1個filename.html [R = 301,L] 重寫規則^ \ PC = 2 someotherfilename.html [R = 301,L] 但是它不工作。我是否需要「打開任何東西」才能使其工作? – Jenski 2009-08-26 12:43:38

+0

我忘記了RewriteBase,請參閱編輯。 – Residuum 2009-08-26 12:59:54

+0

我已經在RewriteBase中添加了: 「/ var/www/mywebsite/htdocs/folder/ .htaccess:RewriteBase:參數不是有效的URL」 – Jenski 2009-08-26 13:10:49

相關問題