Авторизация через .htaccess?
На сайте сделал авторизацию с использованием модуля апача auth_form_module через .htaccess
В .htaccess прописано
Session On
SessionCookieName session path=/
SessionMaxAge 86400
#SessionCryptoPassphrase secret
AuthFormProvider file
AuthName "authenticationform"
AuthType form
AuthUserFile www/path_to_domains/login/passwords
AuthFormFakeBasicAuth On
ErrorDocument 401 "/log/aulogin.html"
Require valid-user
<Files "/log/aulogin.html">
Allow from all
</Files>
ErrorDocument 404 /errdoc.php
#RequestHeader set X-Remote-User expr=%{REMOTE_USER}
# Кеширование #
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
ExpiresByType text/cache-manifest "access plus 0 seconds"
# html
ExpiresByType text/html "access plus 0 seconds"
# XML
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
# RSS
ExpiresByType application/rss xml "access plus 1 hour"
# Favicon
ExpiresByType image/x-icon "access plus 1 week"
# Картинки
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
# HTC файлы (например css3pie)
ExpiresByType text/x-component "access plus 1 month"
# Нестандартные шрифты сайта
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
# CSS и javascript
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
</IfModule>
# Cache-Control браузера
<ifModule mod_headers.c>
# 30 дней
<filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
# 30 дней
<filesMatch ".(css|js)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
# 2 дня
<filesMatch ".(xml|txt)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</filesMatch>
# 1 день
<filesMatch ".(html|htm|php)$">
Header set Cache-Control "max-age=172800, private, must-revalidate"
</filesMatch>
</ifModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
############################################################################
#### Убираем повторяющиеся слеши (/) в URL ####
############################################################################
RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
#Проверяем, повторяется ли слеш (//) более двух раз.
RewriteRule . %1/%2 [R=301,L]
#Исключаем все лишние слеши.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(. )$ /index.php?%{QUERY_STRING} [L]
# RewriteRule ^(. )$ /errdoc.php?%{QUERY_STRING} [L]
</IfModule>
php_flag register_globals off
php_flag magic_quotes_gpc off
php_value display_errors 1
php_value error_reporting 2047
При разработки использовал локальный сервер OpenServer на котором всё отлично работало.
Механизм такой: из подкаталога открывается форма в подкатологе log после чего файлом router.php запускается файл loginindex.php который прописывает разные куки.
При переносе на внешний хостинг авторизация не проходит. Выходит ошибка
Unauthorized
This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn’t understand how to supply the credentials required.
Additionally, a 401 Unauthorized error was encountered while trying to use an ErrorDocument to handle the request.
Не работает .htaccess, единая точка доступа
Всем привет. Сделал сайт на php с MVC-архитектурой, роуты, единая точка входа, на локалке (openserver) работает хорошо. Нужно было загрузить на сервер с Ubuntu 16.02, поставил LAMP, загрузил. На локалке работает редирект на единую точку входа (index.php), на убунту ничего не работает. В чем может быть дело?
Из данных:
.htaccess:
AddDefaultCharset utf-8
Options FollowSymLinks
RewriteEngine on
RewriteBase /
ErrorDocument 404 /404.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php
Apache: Apache/2.4.18 (Ubuntu)
Не работает авторизация и/или регистрация на сайте, часть 2 / решения проблем / livestreet cms
Снова простое решение иногда возникающей проблемы.
Думаю, что нужно по-умолчанию добавить в .htaccess редирект с домена с «www.» на без него т.к. если сайт был сконфигурирован (в конфиге записано) без указания «www», то при заходе пользователем на сайт с префиксом «www.», и, например, авторизации, посылается запрос на домен без «www» (т.к. в JS-массиве роутера запись для урлов аякса указывает на домен без «ввв», которая взята с конфига, естественно) т.е. фактически на другой домен, а политика безопасности браузера не разрешает такой кросс доменный запрос и блокирует его. В итоге для пользователя все выглядит весьма простым образом:
и, как всегда, юзер идет на сайт сообщества и публикует новый топик с вопросом, что после нажатия на кнопку авторизации ничего не происходит, только индикаторы загрузки крутятся без перерыва на обед.
Ему дают стандартный ответ — смотри логи и/или ответ Firebug.
Интересно и то, что может быть обратно пропорциональная ситуация: в конфиге сайт записан с «www», а пользователь открыл сайт без указания устаревшего префикса. И снова аякс не сработает.
Мало уловимый «баг» (если, конечно, его таковым можно вообще назвать) — много частых вопросов.
Поэтому, веб-мастера, которые выращивают ЛС у себя на сайтах, делайте редирект на тот домен, который у вас прописан в конфиге:
$config['path']['root']['web'] = 'http://site.com';
А как это сделать — уже писалось ранее:
Итак ЛС желательно размещать на домене без «www», т.к. он уж очень не любит этого — авторизация на сайте будет выполнятся либо на «www» либо на «без www», поэтому пользователи будут периодически слать вам (админу) письма о невозможности входа на сайт или периодического разлогинивания. Будьте бдительны — выключите дедушку «www» сразу.
Пожалуй, самый лучший вариант сделать это посредством модуля mod_rewrite вашего сервера, дописав в конец файла .htaccess, который находится в корне вашего сайта следующие строки:
RewriteCond %{HTTP_HOST} ^www.САЙТ.com [NC] RewriteRule ^(.*)$ http://САЙТ.com/$1 [L,R=301]
где САЙТ — имя вашего сайта.
В каталоге модулей для Ливстрит есть плагин который делает тоже самое, но с точки зрения скорости работы (и затраты ресурсов сервера) — это не рационально.
Это кросспост из гида по лс.
UPD: Добавил пример:
AddDefaultCharset UTF-8 Options -Indexes RewriteEngine On #RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ./index.php # Alternative rule #RewriteRule ^(.*)$ /index.php <Files "plugins.dat"> order allow,deny deny from all </Files> <Files ~ ".tpl$"> Order allow,deny Deny from all </Files> #MOD by PSNet <Files "plugin.xml"> order allow,deny deny from all </Files> RewriteCond %{HTTP_HOST} ^www.livestreetguide.com [NC] RewriteRule ^(.*)$ http://livestreetguide.com/$1 [L,R=301]
UPD2: Код редиректа нужно вставлять сразу после директивы
RewriteEngine On
т.к. в противном случае он не на всех страницах делал корректный редирект
Управление сайтом на windows-хостинге или как быть если не работает .htaccess
Далеко не секрет то, что в случае работы сайта на
Windows-хостинге
под управлением web-сервера IIS не работают директивы, размещаемые в файле .htaccess, которые позволяют управлять настройками сайта, работающего под управлением Apache.
Панели управления хостингом в своей массе не реализуют тех настроек сайта, которые могут потребоваться клиенту для полноценной работы. Безусловно ручная настройка персоналом хостера сайта клиента по запросу это не выход, а костыль, на который не стоит опираться.
Для решения данной проблемы компания Microsoft выпустила своё решение — программу IIS Manager.
Программа размером менее двух мегабайт позволяет удаленно подключиться к web-серверу IIS и управлять настройками сайта практически так же, как это доступно системному администратору локально. Не надо путать с аналогичной по названию оснасткой для администраторов сервера. Это просто программа, работающая без установленного локально IIS на любом ПК с установленной ОС Windows.
Возвращаясь к .htaccess отметим, что случае с IIS, аналогом .htaccess является файл web.config, а IIS Manager — это графический интерфейс пользователя к этому (web.config) файлу.
При этом некоторую часть настроек из .htaccess можно импортировать в web.config:
learn.iis.net/page.aspx/5…o-iis-webconfig/
В том числе можно импортировать правила mod_rewrite, используя встроенный функционал IIS Manager
learn.iis.net/page.aspx/4…odrewrite-rules/
В итоге получаем, что для хостинг-провайдера IIS Manager это безопасное средство управления настройками IIS-клиентов, клиент не может изменить настройки сайтов других клиентов, только своих сайтов, а для клиента это мощный инструмент с большим списком возможностей, среди которых можно выделить следующие:
1. Управление ASP.NET, например, задание параметров отправки писем, параметров подсоединения к базам данных.
2. URL Rewriting (правила mod_rewrite), создание правил для модификации URL.
3. Handle mapping — настройка реакции сервера на расширения файлов.
4. Можно менять правила аутентификации.
5. Фильтрация запросов — возможность запрета доступа к файлам по расширениям, например можно сделать все файлы с расширениями .config и .inc недоступными.
Пять пунктов это краткий список, настроек доступно больше, полный список вы можете посмотреть у нас, активировав доступ в панели управления windows-хостингом. Данная возможность работает и на бесплатном демонстрационном периоде (кстати, демо-период целых 30 дней).
P.S. сегодня мы стали Microsoft Gold Certified Partner. Всего за год — это довольно быстро.
Поздравления принимаются. 😉