Apache重写目录与异常

时间:2011-08-19 22:03:25

标签: apache .htaccess

我正在尝试设置一个重写,它将获取新闻文件夹中的所有页面(index.shtml和template.shtml除外(其中template.shtml中将包含get变量新闻)。所有其他页面应该重写为template.shtml?news =(与新闻/名称相同)。

到目前为止我所拥有的是:

RewriteCond %{REQUEST_URI} !^/news/((index|template).shtml)?$
RewriteRule ^news/(.*) /news/template.shtml?news=$1

这似乎排除了main / news /,但不是template.shtml,重写似乎循环。

我该如何解决这个问题?任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:1)

嗯 - 这个对我来说很好用:

RewriteCond %{REQUEST_URI} !^/news/(index|template)\.shtml$
RewriteRule ^news/(.+)$ /news/template.shtml?news=$1 [L,QSA]
  1. 此规则将忽略对/news/index.shtml/news/template.shtml的请求。

  2. 仅在/news/请求时(由于我已将.*更改为.+以使其处于更安全的一面),它也无效。

  3. 其他任何内容都会被重写为/news/template.shtml?news=whatever

  4. 我还添加了QSA标记以保留任何现有的查询字符串(对于保留引荐数据很有用,例如/news/hello-pink-kitten?source=google将被重写为/news/template.shtml?news=hello-pink-kitten&source=google