[英]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
我已經閱讀了有關制作例外的信息,但無法弄清楚如何獲取:
我確定這可能取決於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.