我遇到了重定向的情况,其中站点一部分是动态的,一部分是生成的.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
以禁用扩展猜测行为。