2017-06-14 97 views
0

我正在尋找包括以下重寫規則,但似乎無法使其工作。我不想傳入任何查詢字符串,但我需要在規則中添加一個。htaccess從文件夾到查詢字符串的文件夾重寫規則

我希望這個網址:

https://example.co.uk/vehicles/ 

指:

https://example.co.uk/search-results/?category=1 

但保持第一URL地址欄。 我需要傳入一個名爲類別的變量值。

我嘗試以下,但它並沒有爲我工作:

rewriterule ^vehicles/$ search-results/?category=1 [NC, L] 

任何幫助,將不勝感激。

RewriteEngine On 
RewriteRule .* ? [F,L] 
RewriteRule ^(.*)$ https://example.co.uk/$1 [R,L] 
RewriteRule ^ad/(.*/)?([0-9]+)$ view-ad/?ad=$2 [NC,L] 
RewriteRule ^vehicles/$ search-results/?category=1 [NC,L] 
+0

「沒有工作」 - 請更具體。究竟發生了什麼?您在上面發佈的指令會導致500內部服務器錯誤 - 因爲_flags_參數中存在錯誤的_space_。 – MrWhite

+0

我正在使用自己的服務器和網站。該頁面加載但不能通過查詢字符串變量。 – user3068032

+0

修改爲包含以上的.htaccess文件 – user3068032

回答

0

我設法解決它。這是由於頁面上的Ajax負載。

很高興你解決你的初始查詢,但是,下面在發佈.htaccess文件會打破你的網站兩個指令,所以推測,這些都已經被刪除?

RewriteRule .* ? [F,L] 
RewriteRule ^(.*)$ https://example.co.uk/$1 [R,L] 

第一個指令只是阻止所有訪問你的網站,返回403禁止響應。第二個指令將導致重定向循環。

現在,它的工作原理是有可能有另一個重寫規則,這是否https://example.co.uk/vehicles/?something=1和改寫爲https://example.co.uk/vehicles/?category=1&appendsomething=1,但只顯示https://example.co.uk/vehicles/

我假設你的意思是https://example.co.uk/search-results/?category=1&something=1(而不是/vehicles/) - 在something=1追加在查詢字符串的末尾?

您將無法將此顯示爲「https://example.co.uk/vehicles/」 - 因爲與您現有的(工作)指令衝突

但是,您可能會修改您現有的指令以處理/?something=1的請求,並將其傳遞給替代。這隻需要添加QSA標誌(查詢字符串追加)。例如:在從請求的查詢字符串

RewriteRule ^vehicles/$ search-results/?category=1 [QSA,NC,L] 

QSA標誌結果被附加到在RewriteRule取代指定的查詢字符串的末尾。


UPDATE:重定向HTTP到HTTPS,你需要像下面這樣來代替:

RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://example.co.uk/$1 [R,L] 

注意前面RewriteCond指令 - 這將確保只有HTTP請求重定向,不一切(HTTP和HTTPS),所以避免了重定向循環。最終這也應該是一個301(永久)重定向,所以你應該改變RR=301,但只有當你確定它工作正常。

+0

RewriteRule ^(。*)$ https://example.co.uk/$1 [R,L]我認爲這行只是重定向任何HTTP到HTTPS。我想要的只是用https替換http。 – user3068032

+0

這條線本身會重定向_everything_(包括HTTP和HTTPS),這樣你就會得到一個重定向循環(因爲它會繼續發送重定向回自己)。您需要一個_condition_('RewriteCond'指令)來防止HTTPS請求被重定向。我已經更新了我的答案。 (如果上面沒有導致重定向循環 - 因爲你沒有提到這個(?),那麼它根本就不能被處理?) – MrWhite

相關問題