簡體   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