我正在尝试设置一个重写,它将获取新闻文件夹中的所有页面(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,重写似乎循环。
我该如何解决这个问题?任何帮助将不胜感激。
感谢。
答案 0 :(得分:1)
嗯 - 这个对我来说很好用:
RewriteCond %{REQUEST_URI} !^/news/(index|template)\.shtml$
RewriteRule ^news/(.+)$ /news/template.shtml?news=$1 [L,QSA]
此规则将忽略对/news/index.shtml
和/news/template.shtml
的请求。
仅在/news/
请求时(由于我已将.*
更改为.+
以使其处于更安全的一面),它也无效。
其他任何内容都会被重写为/news/template.shtml?news=whatever
我还添加了QSA
标记以保留任何现有的查询字符串(对于保留引荐数据很有用,例如/news/hello-pink-kitten?source=google
将被重写为/news/template.shtml?news=hello-pink-kitten&source=google
)