У меня есть простой файл .htaccess, который отлично работает с http-версией сайта, но не когда я перехожу на https. Зачем?
RewriteEngine on
#This is so if the file exists then use the file
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ %{REQUEST_FILENAME} [L]
#These conditions check if a file or folder exists just for reference
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#if someone adds ".php" to the slug get rid of it
RewriteRule ^(.*)\.php$ $1
#don't add the [R] here because we don't want it to redirect
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]
Здесь недостаточно информации на 100%, но при обычной настройке SSL по умолчанию (например, Red Hat / CentOS / Fedora) VirtualHost для SSL настраивается в собственном контейнере. Использование mod_rewrite требует, чтобы в корне документа было установлено как минимум «AllowOverride FileInfo», чтобы он мог действовать.
Проверьте свою конфигурацию на наличие SSL (по умолчанию /etc/httpd/conf.d/ssl.conf), убедитесь, что он выглядит примерно так:
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride FileInfo
</Directory>
По умолчанию для AllowOverride установлено значение «Нет», поэтому любой другой параметр (например, «Все»), который добавляет возможности FileInfo, подходит.
http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride
Возможно ли, что mod_rewrite не включен для HTTPS-сервера или что .htaccess не используется?
Проверить AllowOveride
разрешения, используемые для обычного сайта, и сравнение с версией SSL, вероятно, несоответствие. Наверное, введен для повышения безопасности, если не случайно.
mod_rewrite
является почти важным, поэтому любой достойный хостинг-провайдер должен помочь разобраться в этом.
"работает на apache2 + ubuntu Precision"
Подобная проблема возникла у меня, когда я использовал Тонкий каркас и пытаюсь удалить index.php, необходимый в URL-адресе. ReWrite отлично работал для http, но для https: он показывал, что URL-адрес не найден, что означало, что reWrite не работал.
После нескольких пробных попыток я пришел к следующему решению:
cd /etc/apache2/sites-enabled
sudo vim default-ssl
Измените AllowOverride None на Все. так же sudo vim ssl
У меня была аналогичная проблема, это сработало для меня.
В вашем httpd.conf убедитесь, что у вас есть оба:
ServerName domain.com
ServerAlias www.domain.com