【问题标题】:HTACCESS - Allow access to foldersHTACCESS - 允许访问文件夹
【发布时间】:2016-10-14 08:54:32
【问题描述】:

这是我当前的 htaccess。

网站 |.htaccess |--/文件夹-1 |--/文件夹-2

现在我的root htaccess如下:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^site.com$
RewriteRule ^/?$ /public/ [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*) /public/$1 [L]


RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

我希望用户访问文件夹 1 和文件夹 2 中的所有文件和文件夹。如何做到这一点?

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    几个变化:首先做你的域重定向(注意细微的变化);

    RewriteEngine on
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
    RewriteRule .* http://%1/$0 [R=301,L]
    
    RewriteCond %{HTTP_HOST} ^site\.com$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(?!(?:folder-1|folder-2)(?:$|/)|public/(?:index\.php)?$).* public/$0 [L]
    

    这会将您从重写中排除的文件夹合并到主要规则中,因此应该更有效。它看起来很丑,因为它以否定的前瞻断言 (?! 开头,而其余组以 (?: 开头,因此它们没有被捕获。

    您真的需要一个域吗?如果是这样,则应检查所有请求。如果没有,请删除第二个RewriteRule 的第一个RewriteCond

    如果您的默认文档不是index.php,请在第二个RewriteRule 的否定前瞻断言中更改它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-31
      • 2014-12-31
      • 2016-11-27
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多