2016-10-14 2 views
0

Это мой текущий htaccess.HTACCESS - разрешить доступ к папкам

сайта | .htaccess | -/папка-1 | -/папка-2

Теперь мой корень 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. Как это можно сделать?

ответ

0

Несколько изменений: сначала перенаправьте свой домен (обратите внимание на тонкие изменения);

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] 

Это включает в себя папки, которые вы исключаете из переписывания в основное правило, поэтому должно быть более эффективным. Он выглядит уродливым, так как он начинается с отрицательного ожидания вперед (?!, а остальные группы начинаются с (?:, поэтому они не захватываются.

Действительно ли вам нужен единый домен? Если это так, он должен быть проверен на все запросы. Если нет, отбросьте первый RewriteCond второго RewriteRule.

Если ваш документ по умолчанию не является index.php, измените его на отрицательное внешнее утверждение второго RewriteRule.