感謝您將您的代碼添加到您的問題。我們再次看到這是多麼重要:
您的問題是,RewriteRule
確實不是在URL上操作,但在路徑上操作。因此,你需要類似的東西來代替:
RewriteEngine on
RewriteRule ^/?$ /some_url/ [R=301,L,NC,QSD]
從你的問題,如果你想忽略任何GET參數,它是不明確或者如果你只是想如果某些參數設置爲重定向。因此,這裏是如果一些參數在請求實際上設置將只能得到應用的變體:
RewriteEngine on
RewriteCond %{QUERY_STRING} (?:^|&)cat=123(?:&|$)
RewriteRule ^/?$ /some_url/ [R=301,L,NC,QSD]
並沒有真正得到清晰的另一件事是,如果你想在下面http://www.example.com/
所有的URL(所以下面的路徑/
)要重寫,還是隻有該確切的URL。如果你想保持請求的任何潛在的進一步的路徑成分,並重寫(例如http://www.example.com/foo => http://www.example.com/some_url/foo
),那麼你需要在你的正則表達式添加捕獲和重用捕獲的路徑組件:
RewriteEngine on
RewriteRule ^/?(.*)$ /some_url/$1 [R=301,L,NC,QSD]
對於任這個工作你需要通過AllowOverride
命令來啓用對.htaccess
樣式文件的解釋。有關詳細信息,請參閱重寫模塊的官方文檔。您必須注意,-htaccess
樣式文件實際上可由http服務器進程讀取,並且它位於本地文件系統中的http主機DOCUMENT_ROOT
文件夾內。
而且一般提示:你應該總是喜歡在http服務器主機配置,而不是使用.htaccess
樣式文件中這樣的規則。這些文件出了名的錯誤,很難調試,他們真的放慢了服務器。它們僅提供作爲的情況下最後的選擇,你沒有對主機配置控制(讀:真的很便宜的託管服務提供商),或者如果你有依賴於寫自己的重寫規則(這是一個明顯的安全惡夢的應用)。
您必須在問題中內聯發佈您的代碼。沒有這些,我們將無法幫助你。那麼,你所做的規則是什麼「沒有運氣」嘗試? – arkascha
我已經添加了我嘗試使用的代碼。 – yaniv14