2011-07-23 138 views
0

我遇到阻止php脚本访问的htaccess问题。.htaccess阻止访问该网站

这是我收到的时候我加载了页面错误信息:

您没有权限访问此服务器上的index.php。

当我删除.htaccess文件我可以访问index.php没有问题。

相同的.htaccess文件在我使用的不同主机上正常工作。

我的.htaccess文件(编辑:由toopay建议后整理的)

RewriteEngine On 
<Files .*> 
Order allow,deny 
    Allow from all 
</Files> 
Options FollowSymLinks 
RewriteRule ^photos.+$ thumbs.php [L,QSA] 

RewriteRule ^[a-zA-Z0-9\-_]*$ index.php [L,QSA] 
RewriteRule ^[a-zA-Z0-9\-_]+\.html$ index.php [L,QSA] 

我也尝试将文件权限的设置为644,755,777,但仍不能与任何环境中工作。

能否请你帮我看看我有什么问题,因为这是第一次发生,相同的.htaccess文件在同一托管的不同域(文件夹)上工作正常。

+0

打开重写引擎日志和检查输出。 –

+0

难道你最近的2个rewriterules只能产生一个无限循环吗?只是一个想法。 – TMS

+0

@Tomas它不会产生无限循环:第二行不是停放(。)最后一行是解析.html文件,而不是图像等。 (最后一行仅仅是因为这个网站之前是静态html的 - >这种方式我们不会失去访问者:php会在事后正确地重定向) – Czakalli

回答

0

我设法找到解决方案,问题非常简单,我在FollowSymLinks之前缺少一个+。简单的问题,很少浪费时间来找到解决方案。最奇怪的部分是,在同一个托管,不同的域/文件夹它工作相同没有+ ... ...无论如何感谢您的帮助。

这是我最后的工作代码:

RewriteEngine On 
Options +FollowSymLinks 
RewriteRule ^photos.+$ thumbs.php [L,QSA] 

RewriteRule ^[a-zA-Z0-9\-_]*$ index.php [L,QSA] 
RewriteRule ^[a-zA-Z0-9\-_]+\.html$ index.php [L,QSA] 
-1

您的htaccess的顺序,应该是...

RewriteEngine On 
<Files .*> 
Order allow,deny 
    Allow from all 
</Files> 
Options FollowSymLinks 
RewriteRule ^photos.+$ thumbs.php [L,QSA] 

RewriteRule ^[a-zA-Z0-9\-_]*$ index.php [L,QSA] 
RewriteRule ^[a-zA-Z0-9\-_]+\.html$ index.php [L,QSA] 
+0

谢谢@toopay,我只是试过这个,但没有成功。同样的错误。 – Czakalli

+0

-1:只要你的'RewriteEngine On'在你的'RewriteRule'之前,它可以在任何地方。它对其他指令没有影响。 –

1

无法会有问题<Files .*>?我认为这是一个通配符模式,所以你应该只使用<Files *>

+0

这不是问题,我根本不需要这个,只是为了确保它不是阻止文件的htacces。 – Czakalli