Титла: Apache 2.4 - htaccess Публикувано от: globaluty в Nov 26, 2015, 10:45 Здравейте, не мога да се справя с апаче 2.4 на дебиан. Искам да включа htaccess за основния виртуален хост (/var/www). Conf файла вече се казва 000-default.conf, вместо default.conf. Направих неговото съдържание следното:
Код: <VirtualHost *:80> Добавил съм следния .htaccess в /var/www: Код: order deny, allow Все още ме пуска там .. ::) Идеята ми е да забраня, когато се напише IP адреса на машината в браузъра, да отваря /var/www. Ако имате и други предложения, ще съм ви благодарен. Също така в /etc/apache2/apache2.conf съм направил следната промяна: Код: <Directory /var/www/> Благодаря предварително. Титла: Re: Apache 2.4 - htaccess Публикувано от: Naka в Nov 26, 2015, 12:04 аз съм го правил това когато се напише http://192.168.1.2 или друго публичното ип на сървера да отвори страница и да каже че няма такава страница. затова трябва да имаш 2 виртуални хоста 1.вият за ИП-то а вторият за реалната страница/домейна.
това съм си записал: 1-вият VHost е дефаул когато не е намерен друг матч VHost # когато има зададена директива NameVirtualHost xxx.xxx.xxx.xxx, апачито обшожда само vho st-овете. # той е дефоулт за http://93.184.216.34/ и за всички хостове които са зададени (ресолват се) в DNS, но за които наяма зададен съответен virtualhost. ------- например трябва да стане така: NameVirtualHost 93.184.216.34 NameVirtualHost 192.168.1.2 <VirtualHost 93.184.216.34 192.168.1.2> ServerName error.example.net DocumentRoot /home/NotFound ErrorLog logs/NotFound.net-error_log CustomLog logs/NotFound.net-access_log common </VirtualHost> <VirtualHost 93.184.216.34 192.168.1.2> ServerName www.example.com DocumentRoot ................. ....... </VirtualHost> като в DNS-а www.example.com е описан а error.example.net НЕ Е описан. сега като апачито не може да намери виртуалнен хост който да обслужи той сервира първият виртуален хост в конфиг файла- а това е виртуал хоста за чистото IP. А ти в DocumentRoot /home/NotFound ще сложиш една страница със ледното съдържание: "Педал я се махай оттука, що набираш ип-та!!!!" --------------PS след това в конфига който си написал има противоречие <Directory /var/www> AllowOverride All Order allow,deny allow from all </Directory> а пък в .htaccess за /var/www order deny, allow deny from all първо му казваш в конфига allow from all а след това в .htaccess казваш deny from all Не знам кое ще е с приоритет. По принцип няма разлика между директивите в http.conf и .htaccess разликата е само че http.conf се чете един път при старт на апачито (и затова при всяка промяна на http.conf апачито трябва да се рестартира) , а .htaccess се чете всеки път при обслужване на директорията и затова няма нужда от рестарт. това дава голям overload. .htaccess са го измислили заради хостигите. За да не бара юзерите по апачито а само да си бутат конфиг фалове по директориите. Съветвам те да ползваш или само едното или само другото. Титла: Re: Apache 2.4 - htaccess Публикувано от: globaluty в Nov 26, 2015, 15:22 Мда, всъщност проблемът беше в това, че на дефаулт хоста съм му задал all from all. Оказа се, че той е с приоритет.
AllowOverride All не означава ли, че дори да съм задал в случая на дефаулт хоста all from all, щом задам в определената директория deny from all с .htaccess, то то ще чете от .htaccess файла ::) И вторият ми въпрос е как да огранича правата само в текущата директория, sub-директориите да не се закачат ? Титла: Re: Apache 2.4 - htaccess Публикувано от: Naka в Nov 26, 2015, 15:58 AllowOverride All не означава ли, че дори да съм задал в случая на дефаулт хоста all from all, щом задам в определената директория deny from all с .htaccess, то то ще чете от .htaccess файла ::) ДА би трябвало да означава. AllowOverride означава Allow-позволи Override-презапис,пренаписване отгоре на всички директиви - ALL, които са декларирирани в httpd.conf <directory> http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride Цитат When the server finds an .htaccess file (as specified by AccessFileName), it needs to know which directives declared in that file can override earlier configuration directives. Цитат When this directive is set to All, then any directive which has the .htaccess Context is allowed in .htaccess files. в случая понеже използваш само allow и deny въпросната директива би трябвало да е еквивалента на AllowOverride Limit Цитат Limit .htaccess всъщност са малки конфиг файлове, части от големия, но само за някоя директория, които Override-ват големия конфиг. Обаче са позволени само директиви и опции, които имат смисъл за директории. Например не можеш да ползваш в .htaccess опции, които работят само по УРЛ-а. например не можеш да ползваш <location> Титла: Re: Apache 2.4 - htaccess Публикувано от: globaluty в Nov 26, 2015, 16:19 Направих следното. Създал съм нов хост и съм записал следното:
Код: DocumentRoot /var/www/web В директория /var/www/web/subweb съм поставил файл .htaccess със следното съдържание: order allow,deny allow from all По моята логика, трябва да те пуска в subweb и да не те пуска в web. И в двете НЕ те пуска обаче. Естествено влизам си с URL-a, който съм задал във виртуалния хост. Титла: Re: Apache 2.4 - htaccess Публикувано от: Naka в Nov 26, 2015, 16:36 .htaccess с какви пермишъни е? Дали изобщо го чете? направи го на 777
но ми се струва че проблема е друг. след като си му забранил да влиза в /var/www/web/ как ще влезе вътре и ще прочете subweb/ дирекорията --- и съответно няма да изпълни .htaccess-а пробвай така без .htaccess Код: <Directory /> Титла: Re: Apache 2.4 - htaccess Публикувано от: globaluty в Nov 26, 2015, 16:41 Така работи, но идеята ми е само в основната директория да няма достъп никой. Във всички останали да има, за да не се налага всеки път да едитвам conf файла на хоста ::)
Титла: Re: Apache 2.4 - htaccess Публикувано от: Bogo в Nov 26, 2015, 20:30 Изтрий 000-default.conf, default.conf или ги премеси в /etc/apache2/sites-available и рестартирай
и никой няма да има достъп до /var/www после си направи файл /etc/apache2/sites-enabled/www_one.conf на който document root е /var/www/www_one после си направи файл /etc/apache2/sites-enabled/www_two.conf на който document root е /var/www/www_two и така нататък Титла: Re: Apache 2.4 - htaccess Публикувано от: Ali Nebi в Nov 29, 2015, 21:46 Здравей,
обърни внимание и на това, че в apache 2.4 вече е следният формат: Require all granted Require host ... Require ip .... https://httpd.apache.org/docs/2.4/howto/access.html Има модул, който позволява поддръжка на стария формат и в дебиан мисля, че беше пуснат по подразбиране, така че и старият формат би трябвало да работи. Титла: Re: Apache 2.4 - htaccess Публикувано от: Ali Nebi в Nov 29, 2015, 21:50 П.С. Това, което искаш може лесно да се направи и с mod_rewrite, така ще блокираш достъпа само ако се извиква по IP:
Примерно RewriteEngine On RewriteCond %{HTTP_HOST} ^xxx\.xxx\.xxx\.xxx RewriteRule .* - [F] |