2012-08-15 89 views
0

我想創建一個條件,如果頁面中有參數,如?print = 1 - 將此頁面本身重定向到沒有任何查詢字符串。.htaccess 301重定向到沒有查詢字符串的同一頁面

例子:

我想這個網頁:

http://sos-med.com/en/specific_page.html?print=1&ok=1 

TP重定向(301)到同一個URL沒有查詢字符串:

http://sos-med.com/en/specific_page.html 

我的代碼是:

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^*print=*$ [NC] 
RewriteRule ^(.*)$ %{REQUEST_URI}? 

我沒有測試服務器,所以你可以告訴我,如果我的代碼是好的?

上面的代碼適用於網站上的每個頁面。在實現該規則之前,我想嘗試重定向一個特定的頁面(請參閱我的示例)。
如何修改代碼以僅與「specific_page.html」一起使用?

我只想要.htaccess解決方案,而不是PHP代碼。

回答

1

你靠近,你的正則表達式%{QUERY_STRING}是不正確的,而你錯過了301重定向標誌:

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^print=.*$ [NC] 
RewriteRule ^(.*)$ %{REQUEST_URI}? [L,R=301] 

嘗試。


謝謝,如果我想單一的特定頁面重定向:sos-med.com/en/aaa.html?print=1 & OK = 1〜sos-med.com/en/aaa .html? -

然後你會改變規則匹配反對什麼:

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^print=.*$ [NC] 
RewriteRule ^en/aaa.html$ %{REQUEST_URI}? [L,R=301] 
+0

謝謝,如果我想重定向一個特定的頁面: HTTP ://sos-med.com/en/aaa.html?print = 1&ok = 1 to http://sos-med.com/en/aaa.html? – 2012-08-15 22:46:55

+0

@VitalyShalman我附加了答案 – 2012-08-15 22:52:08

0

試試這個來代替:

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^(.*&)?print= [NC] 
RewriteRule ^(.*)$ /$1? [L,R=301] 
相關問題