Сделать Локальную папку .Htaccess импортировать глобальные правила из Root .Htaccess - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть специальная папка на моем сайте, которая должна иметь свои собственные правила маршрутизации. Итак, у меня есть собственный файл .htaccess со следующим кодом:

DirectoryIndex router.php
Options -Indexes
Options +FollowSymLinks

RewriteEngine on
RewriteBase /categories/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/*([^/]*/?[^/]*)/*$ router.php?url=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/*$ catrouter.php?url=
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ 404.php [L,QSA]

Но с этой настройкой мой root .htaccess правила не работают. Например, перенаправление с не-www на www и с не-https на https.

Вот моя корневая структура:

Options -Indexes

RewriteEngine on

RewriteCond %{HTTP_HOST} !^subdom\. [NC]

###
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
###

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_USER_AGENT} ^(BADBOT1|BADBOT2) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^.* - [F,L]

RewriteRule ^(.+?na\.jpg)$ /img/image.jpg [L,NC,QSA]


# Add Proper MIME-Type for Favicon
AddType image/x-icon .ico

# BEGIN EXPIRES
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType text/css "access plus 1 week"
</IfModule>
# END EXPIRES

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php72” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-php .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit

Как я могу сделать этот специальный .htaccess, чтобы следовать другим правилам, которые по умолчанию установлены корнем .htaccess?

В качестве альтернативы, как мне скопировать правила из root в специальный, чтобы он работал правильно?

1 Ответ

0 голосов
/ 11 апреля 2019

Это потому, что ваш сервер читает правила htaccess из папки /category, а не из корня.Ваш /category/.htaccess вызывается, когда вы запрашиваете что-то с сервера с /category URI.Вам нужно скопировать правило http to https из вашего root / htaccess и вставить его в /category/.htaccess, чтобы перенаправление https заработало.

 DirectoryIndex router.php
Options -Indexes
Options +FollowSymLinks

RewriteEngine on
#force ssl plus www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
####
RewriteBase /categories/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/*([^/]*/?[^/]*)/*$ router.php?url=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/*$ catrouter.php?url=
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ 404.php [L,QSA]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...