Apache2 RewriteRule - 如何将规则应用于目录,而不仅仅是文件

时间:2016-06-08 12:57:46

标签: apache mod-rewrite apache2

我在apache2 conf文件中配置了一系列规则,如下所示:

RewriteEngine On

LogLevel alert rewrite:trace3

RewriteCond %{HTTP:Accept} text/xml [NC]
RewriteCond %{REQUEST_URI} !\.[a-zA-Z0-9]{3,4}
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1.xml

RewriteCond %{HTTP:Accept} text/json [NC]
RewriteCond %{REQUEST_URI} !\.[a-zA-Z0-9]{3,4}
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1.json

执行以下任务:

1)如果调用的URL没有扩展名并且传入了“text / xml”标题,则附加.xml

2)如果调用的URL没有扩展名并且已经传入了“text / json”的标题,那么追加.json

除了特定情况外,这种方法很好:

如果我有一个包含以下内容的文件夹:

2016.xml
2016.json
2016    <-(A sub folder)

用户调用http://example.com/foo/bar/2016并将Accept标头设置为“text / json”或“text / xml”

在这种情况下,规则不会触发,并且会返回2016文件夹的目录列表而不是相应的文件。

我可以配置任何方式让它在这种情况下返回2016.xml或2016.json吗?

谢谢!

0 个答案:

没有答案