Привет, вот моя конфигурация сервера:
ДЕБИАН 32 бит / PHP 5 / Apache
Версия сервера: Apache / 2.2.3 - Сервер построен: 22 марта 2008 г., 09:29:10
Файлы доступа:
grep -ni AccessFileName *
apache2.conf:134:AccessFileName .htaccess
apache2.conf:667:AccessFileName .httpdoverride
Все операторы AllowOverride в моей папке apache2 /.
mods-available/userdir.conf:6: AllowOverride Indexes AuthConfig Limit
mods-available/userdir.conf:16: AllowOverride FileInfo AuthConfig Limit
mods-enabled/userdir.conf:6: AllowOverride Indexes AuthConfig Limit
mods-enabled/userdir.conf:16: AllowOverride FileInfo AuthConfig Limit
sites-enabled/default:8: AllowOverride All
sites-enabled/default:14: AllowOverride All
sites-enabled/default:19: AllowOverride All
sites-enabled/default:24: AllowOverride All
sites-enabled/default:42: AllowOverride All
Файл с поддержкой сайтов / по умолчанию:
1 <VirtualHost *>
2 ServerAdmin admin@site.com
3 ServerName mysite.com
4 ServerAlias mysite.com
5 DocumentRoot /var/www/mysite.com/
6 <Directory />
7 Options FollowSymLinks
8 AllowOverride All
9 Order Deny,Allow
10 Deny from all
11 </Directory>
12 <Directory /var/www/mysite.com/>
13 Options Indexes FollowSymLinks MultiViews
14 AllowOverride All
15 Order allow,deny
16 allow from all
17 </Directory>
18 <Directory /var/www/mysite.com/test/>
19 AllowOverride All
20 </Directory>
21
22 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
23 <Directory "/usr/lib/cgi-bin">
24 AllowOverride All
25 Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
26 Order allow,deny
27 Allow from all
28 </Directory>
29
30 ErrorLog /var/log/apache2/error.log
31
32 # Possible values include: debug, info, notice, warn, error, crit,
33 # alert, emerg.
34 LogLevel warn
35
36 CustomLog /var/log/apache2/access.log combined
37 ServerSignature Off
38
39 Alias /doc/ "/usr/share/doc/"
40 <Directory "/usr/share/doc/">
41 Options Indexes MultiViews FollowSymLinks
42 AllowOverride All
43 Order deny,allow
44 Deny from all
45 Allow from 127.0.0.0/255.0.0.0 ::1/128
46 </Directory>
47
48
49
50
51
52
53
54 </VirtualHost>
Если я изменю любое значение Allow from all на Deny from all, оно будет работать всякий раз, когда я его поставлю.
У меня есть один .htaccess на /mysite.com/.htaccess и один на /mysite.com/test/.htaccess с:
Order Deny,Allow
Deny from all
Ни один из них не работает, я все еще вижу свой веб-сайт. У меня включен mod_rewrite, но я не думаю, что он здесь что-то делает.
Я пробовал почти все: / Он работает в моей локальной среде (MAMP), но не работает на моем сервере Debian.
Файлы .htaccess могут неочевидным образом взаимодействовать с основным конфигом. В вашем случае ваша проблема в том, что у вас есть бот для контроля доступа в вашем httpd.conf и вашем файле .htaccess. И они оба применяются.
У вас в конфиге:
Order allow,deny
allow from all
И в вашем файле .htaccess:
Order Deny,Allow
Deny from all
Таким образом, конечный результат такой, как если бы разрешения:
Order Deny, Allow
Deny From All
Allow From ALL
Это означает, что каждый получает доступ. В этом случае следует использовать «Разрешить заказ, запретить».
Однако вам не следует использовать файлы .htaccess вообще, если у вас есть доступ к основной конфигурации. Файлы .htaccess существуют как обходной путь для случаев, когда у вас нет права редактировать основную конфигурацию (например, общий хостинг), но если вы можете редактировать основную конфигурацию, вы должны использовать это.
Файлы .htaccess имеют ряд недостатков. Они читаются только во время запроса и только после того, как сервер переведет URL-адрес в ресурс файловой системы. Они не читаются при запуске сервера. Это означает, что файлы .htaccess, возможно, читаются при каждом запросе (что приводит к снижению производительности), но иногда не читаются никогда.
Я думаю, что когда вы используете deny from all в своем корневом каталоге, вы блокируете все, в том числе ваш localhost.
Вам нужно поместить localhost в свой корень.
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
<Directory>
Затем перезагрузите и перезапустите apache:
/etc/init.d/apache2 перезагрузить
/etc/init.d/apache2 перезапуск
Для справки и производительности см. Документацию apache для htaccess и разрешение