【问题标题】:prevent access to a subfolder in a domain after a redirect阻止重定向后访问域中的子文件夹
【发布时间】:2013-11-03 19:02:13
【问题描述】:

假设我有以下指向文件夹“public_html”的“mydomain.com”。

我想将所有 mydomain.com 重定向到 mydomain.com/prod/public 文件夹,所以我编辑了 .htaccess 文件,如下所示:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$
RewriteCond %{REQUEST_URI} !^/prod/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /prod/public/$1

RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$
RewriteRule ^(/)?$ prod/public/index.php [L]

更改按预期工作,耶!!!

如何防止通过以下请求访问该网站:

http://mydomain.com/prod/public/

 http://mydomain.com/prod/public/index.php

【问题讨论】:

    标签: regex .htaccess mod-rewrite redirect


    【解决方案1】:

    将此规则作为第一条规则放入您的 prod/public/.htaccess 文件中:

    RewriteEngine on
    
    # direct access forbidden
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+prod/public(/index\.php|/?)?[\s?] [NC]
    RewriteRule ^ - [F]
    

    【讨论】:

    • 抱歉问题仍然存在
    • 那么您在浏览器中输入http://mydomain.com/prod/public/index.php 并显示正常内容?
    • prod 或 prod/public 中是否有任何 .htaccess?
    • 选项 -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
    • 对于 404,您可以将 RewriteRule ^ - [F] 替换为 RewriteRule ^ - [L,R=404]
    猜你喜欢
    • 2012-11-18
    • 2021-05-08
    • 2014-07-21
    • 2011-12-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 2017-03-17
    • 2022-11-26
    相关资源
    最近更新 更多