Apache2&.htaccess:Apache忽略AccessFile

嗨,那里是我的服务器configuration:

DEBIAN 32Bits / PHP 5 / Apache

服务器版本:Apache / 2.2.3 – 服务器内置:Mar 22 2008 09:29:10

AccessFiles:

grep -ni AccessFileName *

apache2.conf:134:AccessFileName .htaccess apache2.conf:667:AccessFileName .httpdoverride 

我的apache2 /文件夹中的所有AllowOverride语句。

 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 [email protected] 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> 

如果我从所有的拒绝中全部改变任何允许,只要我把它放在它的工作。

我在/mysite.com/.htaccess有一个.htaccess,在/mysite.com/test/.htaccess有一个:

 Order Deny,Allow Deny from all 

他们都没有工作,我仍然可以看到我的网站。 我已经启用了mod_rewrite,但是我不认为它在这里执行任何操作。

我尝试了几乎所有的东西:/它在我的本地环境(MAMP)上工作,但在我的Debian服务器上失败。

.htaccess文件可以以不明显的方式与主configuration进行交互。 在你的情况下,你的问题是你在你的httpd.conf和你的.htaccess文件中有访问控制机器人。 他们得到应用。

你有你的configuration:

 Order allow,deny allow from all 

并在您的.htaccess文件中:

 Order Deny,Allow Deny from all 

所以最终的结果就好像权限是:

 Order Deny, Allow Deny From All Allow From ALL 

这意味着每个人都可以访问。 在这种情况下,你应该使用“顺序允许,拒绝”。

但是,如果您有权访问主configuration,则不应该使用.htaccess文件。 .htaccess文件作为一种解决方法,在没有编辑主configuration(如共享主机)的权限的情况下存在,但是如果您可以编辑主configuration,则应该使用该configuration。

.htaccess文件有很多缺点。 它们只能在请求时读取,并且只能在服务器将URL转换为文件系统资源之后才能读取。 服务器启动时不会读取它们。 这意味着.htaccess文件可能会在每次请求时被读取(导致性能下降),但是有时甚至无法读取。

我想当你在你的根目录中使用全部拒绝时,你是阻止所有,也是你的本地主机。
你需要把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和授权