.htaccess 如何重定向URL?

.htaccess 如何重定向URL?,.htaccess,url-rewriting,silverstripe,.htaccess,Url Rewriting,Silverstripe,我在重定向Silverstripe网站上的URL时遇到问题。我有一个新闻提要页面,以分页的方式提供文章摘要。它最初显示20篇文章,并根据所选页码切换到下一篇20篇。这只是标准的博客布局。当我点击第2页时,它应该导航到https://******/news/?count=20,对于第3页,它应该导航到https://******/news/?count=40等。但是,点击博客页码后,它会导航到https://******/news/news/?count=20。因此导航链接没有重写父URL 除此之

我在重定向Silverstripe网站上的URL时遇到问题。我有一个新闻提要页面,以分页的方式提供文章摘要。它最初显示20篇文章,并根据所选页码切换到下一篇20篇。这只是标准的博客布局。当我点击第2页时,它应该导航到https://******/news/?count=20,对于第3页,它应该导航到https://******/news/?count=40等。但是,点击博客页码后,它会导航到https://******/news/news/?count=20。因此导航链接没有重写父URL

除此之外,我的所有其他Silverstripe网站都可以使用相同的博客布局,我看不出有任何理由调整默认代码。我想添加一个.htaccess重定向,如下所示

Redirect 301 /news/news/?start=20 https://******/news/?start=20
但我运气不好,没能成功。请给我一个解决方案

我期望的输出是重定向到正确的URL

https://******/news/?start=20

以下是一个简单的重定向规则,可以修复您描述的症状:

RewriteEngine on
RewriteRule ^/?news/news/(.*)$ /news/$1 [R=301,L]

但我怀疑这种方法是个好主意。仅仅是因为它试图修复症状,而不是原因。原因是您实际创建了对URL的请求,其中包含了不应该发生的
/news/news/
问题。我认为这个问题的原因是您分发了相对引用(比如
news/..
),而不是绝对引用(
/news/..
)。我强烈建议你处理好原因,而不是试图修复症状

请理解,查询字符串(问号后面的部分)不是应用重写模式的URL的一部分。所以你的重定向将永远不会被应用。谢谢你的及时回复。你能建议我一个解决方案重定向URL尽管查询字符串参数。我只想一个/news/消失。我添加了一个简短的答案。似乎你有一个相对生成的URL,而不是绝对?这就解释了URL中的双倍
新闻
。谢谢。我会找到原因的。