【问题标题】:.htaccess blocking access to the site.htaccess 阻止访问该站点
【发布时间】:2011-07-23 12:14:47
【问题描述】:

我遇到了阻止 php 脚本访问的 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 文件在同一主机上的不同域(文件夹)上运行良好。

【问题讨论】:

  • 开启重写引擎日志并检查输出。
  • 你的最后 2 个重写器不能产生无限循环吗?只是一个想法。
  • @Tomas 它没有产生无限循环:倒数第二行没有停放 (.) 最后一行仅解析 .html 文件,而不是图像等。 (这最后一行之所以需要,只是因为该站点以前是静态 html -> 这样我们就不会失去访问者:php 之后会正确重定向)

标签: php .htaccess


【解决方案1】:

&lt;Files .*&gt;会不会有问题?我认为这是一个通配符模式,所以你应该只使用&lt;Files *&gt;

【讨论】:

  • 这不是问题。我实际上根本不需要它,只是为了确保阻止文件的不是 htacces。
【解决方案2】:

我设法找到了解决方案,问题非常简单,我在 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]

【讨论】:

    【解决方案3】:

    你的 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]
    

    【讨论】:

    • 谢谢@toopay,我刚试过这个,但没有成功。同样的错误。
    • -1:只要您的RewriteEngine On 在您的RewriteRule 之前,它就可以在任何地方。它对其他指令没有影响。
    猜你喜欢
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多