mod_rewrite 在重定向时添加 .html

mod_rewrite 在重定向时添加 .html

我遇到了重定向的情况,其中站点一部分是动态的,一部分是生成的.html 文件。

例如,mysite.com/homepage 和 mysite.com/products/42 实际上是静态 html 文件

而其他 URL 是动态生成的,例如 mysite.com/cart

mysite.com 和 www.mysite.com 都指向同一个地方。但是我想将所有来自 mysite.com 的流量重定向到 www.mysite.com。

我已经很接近了,但是我遇到了一个问题,Apache 在我的 URL 末尾添加了 .html,而对于存在静态 .html 文件的任何内容,我都不想这样做。

我想重定向这个:

  http://mysite.com/products/42 

对此:

  http://www.mysite.com/products/42

但是 Apache 却将其变为这样(因为 42.html 是一个实际的 html 文件):

  http://www.mysite.com/products/42.html

我不想这样 - 我希望它重定向到 www.mysite.com/products/42

以下是我的开始:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]

RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]

我尝试使参数和 .html 成为可选的,但 .html 仍然在重定向中添加:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]

RewriteRule ^(.*)?(\.html)?$ http://www.mysite.com/$1 [R=301,L]

我做错了什么?真的很感激 :)

答案1

我责怪MultiViews

尝试设置Options -MultiViews以禁用扩展猜测行为。

相关内容