У меня есть ситуация перенаправления, когда сайт частично является динамическим, а частично сгенерированным .html-файлами.
Например, mysite.com/homepage и mysite.com/products/42 на самом деле являются статическими html-файлами.
В то время как другие URL-адреса генерируются динамически, например mysite.com/cart
И mysite.com, и www.mysite.com указывают на одно и то же место. Однако я хочу перенаправить весь трафик с mysite.com на www.mysite.com.
Я так близок, но столкнулся с проблемой, когда Apache добавляет .html в конец моих URL-адресов для всего, где существует статический файл .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]
Что я делаю не так? Действительно ценю это :)
я обвиняю MultiViews
!
Попробуйте установить Options -MultiViews
чтобы отключить угадывание расширений.