У меня есть простой файл .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]
источник
/etc/apache2/sites-enabled/default-ssl.conf
(2) для ясности, если у вас все еще есть проблемы, попробуйтеAllowOverride All
вместоAllowOverride FileInfo
. Как только вы начнете работать, вы можете прочитатьAllowOveride
подробные документы Apache, чтобы более конкретно ограничить доступ для максимальной безопасности. (3) Помните, что вы должны перезапустить apache, чтобы настройки вступили в силу.Возможно ли, что mod_rewrite не включен для сервера HTTPS или что .htaccess не используется?
Проверьте используемые
AllowOveride
разрешения для обычного сайта и сравните с версией SSL, возможно, есть расхождение. Вероятно, введены для повышения безопасности, если не случайно.mod_rewrite
Это очень важно, поэтому любой порядочный хостинг-провайдер должен помочь разобраться в этом.источник
"работает над apache2 + ubuntu точное"
Подобная проблема возникла у меня, когда я использовал Slim Framework и пытался удалить index.php, требуемый в URL. Перезапись отлично работала для http, но для https: показывался url not found, что означало, что перезапись не работала.
После некоторой хитовой попытки я придумал это решение:
Измените AllowOverride None на All . Точно так же sudo vim ssl
источник
У меня была похожая проблема, вот что у меня сработало.
В вашем httpd.conf убедитесь, что у вас есть оба:
ServerName domain.com
ServerAlias www.domain.com
источник