SSL .htaccess - простой Q
Я действительно ненавижу этот файл ... Я просто потратил 6,5 часов, пытаясь понять это, и с моей дислексией СДВГ это просто невозможно !! У меня есть домен, который я купил для SSL (в настоящее время мне нужно подождать, пока ssl для WWW не сработает, но пока домен без WWW работает, например:
https://tomas.com
.Htaccess, который у меня есть в корне, в настоящее время:
RewriteEngine On
RewriteCond %{HTTP_HOST} tomas\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://tomas.com/$1 [R,L]
И приведенный выше код действительно активирует SSL, что хорошо. Дело в том, что у меня есть несколько файлов в корневом домене, но один из них называется:
hello.php (находится по адресу: "tomas.com/hello.php")
Если я пойду: http://tomas.com/helloЯ хочу, чтобы он отображал этот файл (и в адресной строке он должен был сказать: «http://tomas.com/hello»). До SSL у меня был этот код ниже, и он работал (но уже не):
RewriteRule ^([^/]*)/?(.*)$ $1.php
Есть идеи, как должен выглядеть весь .htaccess? : /
Я также пытаюсь заставить его НЕ использовать www (так что, если они это сделают, он должен быть перенаправлен на URL, отличный от WWW) Большое спасибо заранее !!!!!!!!!!!!
Ответы
До SSL у меня был этот код ниже, и он работал (но уже не):
RewriteRule ^([^/]*)/?(.*)$ $1.php
Не уверен, как это «работало» раньше, оно не является полным само по себе и делает больше, чем просто добавляет .phpрасширение. Вам нужно что-то, чтобы предотвратить цикл перезаписи, поскольку hello.phpтакже соответствует шаблону ^([^/]*)/?(.*)$.
Вместо этого попробуйте следующее после перенаправления HTTP на HTTPS.
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.*) $1.php [L]
Это сначала проверяет, существует ли файл с .phpрасширением файла, прежде чем внутренне перезаписывать его.
В качестве альтернативы вы можете просто включить MultiView, если вы не выполняете переписывание других URL. Например, вверху вашего файла:
Options +MultiViews
Это использует mod_negotiation, чтобы включить URL без расширений для всего !