.htaccess — Запретить файлу наследовать правила перенаправления от родительского

#php #apache #.htaccess #redirect #mod-rewrite

#php #апач #.htaccess .htaccess #перенаправление #модификация-перезапись

Вопрос:

Мой сайт структурирован следующим образом:

 include
include/interface/
include/templates/
include/subdomains/

include/subdomains/forum ...
  

Я хочу перенаправить пользователя на ошибку 404 при просмотре fodler include и всех подкаталогов за пределами этого. Это работает очень хорошо, и поддомены будут просматриваться через официальный forums.example.org но не через example.org/include/subdomains/forum/

Для достижения этого я использую правило:

 Redirect 404 /include/
  

Однако, когда я захожу на форум и использую переписанные URL-адреса с форума, они выдают ошибку 404 из-за того, как структурирован форум. Форум структурирован следующим образом:

include/rewrite.php

Он пытается запросить этот файл, но из-за (я предполагаю, что родительский файл .htaccess взаимодействует с файлом forums htaccess), он не работает, и я получаю ошибку «Запрошенный URL .. не может быть найден на этом сервере».

Мой вопрос в том, как я могу сохранить родительский файл htaccess, перенаправляющий папку include сайта на ошибку, но не на ошибку для форума?

Мой код выглядит следующим образом:

родительский htaccess:

 RewriteEngine on
# Do not remove this line, otherwise mod_rewrite rules will stop working
RewriteBase /

ErrorDocument 400 /errors/400
ErrorDocument 401 /errors/401
ErrorDocument 403 /errors/403
ErrorDocument 404 /errors/404
ErrorDocument 500 /errors/500
ErrorDocument 501 /errors/501
ErrorDocument 502 /errors/502
ErrorDocument 503 /errors/503
ErrorDocument 504 /errors/504
ErrorDocument 505 /errors/505
ErrorDocument 506 /errors/506
ErrorDocument 507 /errors/507
ErrorDocument 508 /errors/508
ErrorDocument 509 /errors/509
ErrorDocument 510 /errors/510

AddDefaultCharset UTF-8

<IfModule mod_headers.c>
  <FilesMatch ".(js|css|xml|gz)$">
    Header append Vary: Accept-Encoding
  </FilesMatch>
</IfModule>

Redirect 404 include/
  

Форум htaccess:

 # MultiViews INTERFERS WITH PROPER REWRITING.
Options -MultiViews

RewriteEngine On

# UNCOMMENT AND PROPERLY SET THE RewriteBase IF THE REWRITE RULES ARE NOT WORKING PROPERLY.
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . include/rewrite.php [L]

# ----------------------------------------------------------------------
# DISABLE DIRECTORY BROWSING.
# ----------------------------------------------------------------------
<IfModule mod_autoindex.c>
    Options -Indexes
</IfModule>

# ----------------------------------------------------------------------
# UTF-8 ENCODING.
# ----------------------------------------------------------------------

# USE UTF-8 ENCODING FOR ANYTHING SERVED text/plain OR text/html.
AddDefaultCharset utf-8

# FORCE UTF-8 FOR A NUMBER OF FILE FORMATS.
AddCharset utf-8 .html .css .js .xml .json .rss

# ----------------------------------------------------------------------
# BETTER WEBSITE EXPERIENCE FOR INTERNET EXPLORER USERS.
# ----------------------------------------------------------------------
<IfModule mod_setenvif.c>
    <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
    </IfModule>
</IfModule>

<IfModule mod_headers.c>
    # BECAUSE X-UA-Compatible ISN'T SENT TO NON-IE (TO SAVE HEADER BYTES), WE NEED TO INFORM PROXIES THAT CONTENT CHANGES BASED ON UA.
    Header append Vary User-Agent
    # CACHE CONTROL IS SET ONLY IF mod_headers IS ENABLED, SO THAT'S UNNECESSARY TO DECLARE.
</IfModule>