2010-10-21 100 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