繁体   English   中英

如何使用mod_rewrite与CMS一起删除查询字符串

[英]How to use mod_rewrite to remove a query string withing a CMS

我正在使用CMS,使用以下RewriteRule将所有请求发送到index.php文件

RewriteRule .* index.php [L]         

但是,在该网站的新闻部分中,CMS生成的新闻链接如下: /news?month=201106

我希望我的新闻链接是这样的: /news/month/201106 ,我将用PHP代码来实现。

我不知道如何使用Apache实现重写,如果不是那样的话,我会使用如下代码:

RewriteRule ^news/month/(.+)$ news?month=$1 

但是我的问题是,CMS正在捕获呼叫,并尝试查找/ news / month / 201106,它不能并抛出CMS级别404

我已经阅读了有关制作例外的信息,但无法弄清楚如何获取:

  1. Apache在将重写发送到全部捕获之前对其进行捕获
  2. CMS然后按正常方式处理重写的URL(即:接收新闻?month = 201106并按正常方式处理该URL)

我确定这可能取决于Rewrite标志和这些指令的写入顺序,但我无法使其正常工作。

1)Apache在将重写发送到catch全部之前对其进行捕获

您可以通过在RewriteRule .* index.php [L]之前添加RewriteCond来做到这一点,从而使其看起来像这样:

RewriteCond %{REQUEST_URI} !^/news
RewriteRule .* index.php [L]

2)CMS然后按正常方式处理重写的URL(即:接收新闻?month = 201106并按正常方式处理该URL)

您拥有的第二条规则RewriteRule ^news/month/(.+)$ news?month=$1应该可以解决这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM