Назад | Перейти на главную страницу

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 добавляет .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 чтобы отключить угадывание расширений.