2017-01-12 46 views
0

這裏就是我試圖完成:的RewriteCond%{QUERY_STRING}

http://example.com/real-estate/?group=rentals 需要去 http://example.com/real-estate/rentals

下面是我在我的.htaccess不工作:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/real-estate/ [NC] 
RewriteCond %{QUERY_STRING} ^group=rentals 
RewriteRule (.*) http://example.com/real-estate/rentals/? [NC,R=301,L] 
</IfModule> 
+0

這是非常不尋常的...通常人們希望重定向的其他方式。所以,你的傳入的HTTP請求確實是通過'http://example.com/real-estate/組= rentals'和顯示的網址應改爲通過'http:// example.com /房地產/ rentals'? _真的嗎?_ – arkascha

+0

這是正確的。 – chrislovessushi

回答

0

這是非常不尋常的...通常人們希望重定向的其他方式....

你的代碼看起來很好,只是一些小的更正。但是,這些可能是你錯過了什麼:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_URI} ^/real-estate/?$ [NC] 
    RewriteCond %{QUERY_STRING} ^group=rentals$ 
    RewriteRule^http://example.com/real-estate/rentals [R=301,L] 
</IfModule> 

對於這項工作的規則必須被直接放置在HTTP主機的配置裏面,或者在hosts文件根目錄的.htaccess風格文件,這樣能解釋內文件。

而且一般提示:你應該總是喜歡在http服務器主機配置,而不是使用.htaccess樣式文件中這樣的規則。這些文件出了名的錯誤,很難調試,他們真的放慢了服務器。它們僅作爲最後一種選擇,用於您無法控制主機配置的情況(閱讀:真正便宜的託管服務提供商),或者您擁有依賴編寫自己的重寫規則的應用程序(這是一個明顯的安全噩夢)。

+0

不幸的是,仍然沒有工作。 – chrislovessushi

+0

@chrislovessushi「沒有工作」沒有幫助,你將有更多的詳細信息添加到該語句。怎麼了?你看到了什麼?你的http服務器錯誤日誌文件中有什麼條目?是否對'.htaccess'風格文件的解釋進行了配置? – arkascha

+0

我在我的網站的根目錄下添加上面的代碼(當然改變的example.com)到我的.htaccess文件。當我訪問example.com/real-estate/?group=rentals時,它會正常加載頁面。我需要將URL更改爲example.com/real-estate/rentals – chrislovessushi

0

.htaccess文件只需使用這樣的:

RewriteEngine On 
RewriteRule ^real-estate/([^/]*)$ /real-estate/?group=$1 [L] 

它會離開你的網址:http://example.com/real-estate/rentals。確保在測試之前清除緩存。

+0

我確保清除緩存,但URL仍顯示爲example.com/real-estate/?group=rentals你能想到爲什麼會出現這種情況? – chrislovessushi

+0

你在'.htaccess'文件中還有什麼?如上所述應該沒有問題。 – Lag