2010-10-21 103 views
0

我想從我的日曆中刪除查詢字符串,但我的mod_rewrite不追加查詢字符串。Mod_rewrite幫助

該網站是http://cacrochester.com/Calendar ,如果你點擊鏈接去一個不同的月份,查詢字符串通常http://cacrochester.com/Calendar?currentmonth=2010-11

是我下面的規則,它只是沒有查詢字符串,當您單擊追加所以下個月的鏈接,它只停留在10月份。我的規則有什麼問題?

這裏是我的規則

RewriteCond %{QUERY_STRING} !^$ 
RewriteRule ^.*$ http://cacrochester.com/Calendar? [NC,R=301,L] 

編輯:

我要的是採取URL像http://cacrochester.com/Calendar?currentmonth=2010-11並把它變成像http://cacrochester.com/Calendar/2010-11

+0

你說在第一句話中你想刪除查詢字符串,但你的問題是如何保留它們。這是什麼? – 2010-10-21 23:11:44

+0

只是澄清一下,你正在試圖使用'GET'而不使用地址欄中顯示的查詢字符串? – drudge 2010-10-21 23:12:47

+0

對不起。我希望查詢字符串像http://cacrochester.com/Calenar/2010-11 – Catfish 2010-10-22 00:02:05

回答

2

你可能需要您的應用程序的輸出,如 「/日曆/ 2010-11」 相對URL。這是一個簡單的代碼更改。

然後在Apache中你想重寫這些網址,使用:

RewriteRule ^/Calendar/([0-9]+-[0-9]{2})$ /Calendar.php?currentmonth=$1 [NC,QSA,L]

(你不希望這個規則的RewriteCond)

強制爲R重定向= 301只會公開內部網址方案。我不認爲這就是你想要的。

+0

你是什麼意思'這是一個簡單的代碼更改?像改變我的PHP代碼? – Catfish 2010-10-25 16:39:58

+0

是的,因此「你的應用程序」。 Web服務器並不打算對你的PHP腳本輸出進行url重寫。這將是一個巨大的性能損失。如果你想讓最終用戶看到像/ Calendar/2010-11這樣的URL,那麼取決於你的php(或其他動態語言)應用程序來輸出這些URL。通常這是通過設置一個或多個配置變量(在您的應用程序中)來控制如何構建這些SEO友好的網址。 – runningdogx 2010-10-27 20:40:48

2

爲了維護查詢字符串重寫時,使用QSA(查詢字符串追加)標誌。

[NC,R=301,QSA,L]

+0

這沒有奏效。 – Catfish 2010-10-22 13:19:09