2013-09-16 42 views
1

我的例子htaccess文件包含代碼:mod_rewrite的處理「數據格式」參數

RewriteRule ^cart$ index.php?controller=cart&action=default [L,NC] 
RewriteRule ^listing$ index.php?controller=product&action=listing [L,NC] 
RewriteRule ^blog$ index.php?controller=blog&action=listing [L,NC] 

,我可以通過example.com/cart訪問購物車

我的問題:是否有可能增加一些額外的參數,例如「數據格式」參數?

我希望有example.com/cart訪問(如HTML輸出)和example.com/cart.xml 和其他網址: example.com/listing.xml example.com/blog.xml

重要的是我不要修改每個重寫規則。我在我的htaccess文件中添加了行,所以添加一些修改URL請求的代碼會快得多。

它可能以這種方式工作:??從URL

  1. 刪除的.xml
  2. 比賽重寫URL
  3. 添加格式= XML(的index.php控制器=博客&行動=上市&格式= xml)

此功能是現代PHP和非PHP框架通常用於輸出渲染的網站爲HTML,XML,JSON等..

@ EDIT:

謝謝!我應該在寫作時使用QSA標誌。

規則,我現在使用添加的.xml參數:

RewriteRule ^(.*).xml$ $1?params[output_format]=xml 

回答

1

您可以使用這些規則:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(cart|listing|blog)\.(xml)\s [NC] 
RewriteRule^/%1?format=%1 [R=302,L] 

RewriteRule ^cart$ index.php?controller=cart&action=default [L,NC,QSA] 
RewriteRule ^listing$ index.php?controller=product&action=listing [L,NC,QSA] 
RewriteRule ^blog$ index.php?controller=blog&action=listing [L,NC,QSA] 
  • 第一條規則從URL中移除.xml並添加?format=xml查詢參數。
  • 使用QSA標誌的第二條規則添加其餘的查詢參數。