#.htaccess
Вопрос:
Привет. У меня есть сайт, защищенный .htaccess, который перенаправляет все в каталог /pb, кроме каталога /cron, который доступен напрямую (позже он будет защищен). Мой htaccess работает (он перенаправляет, как я хочу), НО я не могу загрузить файлы .css .js, которые я вызываю непосредственно на свою страницу индекса. Должен ли я поместить новый .htaccess в свой каталог /pb, чтобы разрешить доступ к .css, или я могу сделать это в своем корневом htaccess ? Я не понимаю.
Мой файл .htaccess (строки https не могут быть удалены «хостингером»)
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} (www.)?XXXXXXXXX.net
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule ^(cron) - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^pb/ - [L]
RewriteCond %{DOCUMENT_ROOT}/pb/$1 -f
RewriteRule (. ) pb/$1 [L]
RewriteRule (.*) pb/index.php?path=$1 [L,QSA]
order deny,allow
deny from all
allow from XX.XXX.XXX.XX
Спасибо за вашу помощь
Ответ №1:
Во — первых, я исправил ваш файл правил htacces, внутри файла правил были сделаны комментарии. Создайте файл правил htaccess в следующем стиле, убедитесь, что он помещен в ту же папку, где находится папка pb. Также, пожалуйста, очистите кэш вашего браузера перед тестированием ваших URL-адресов.
Options -Indexes -MultiViews
RewriteEngine on
##Apply https rules here.
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www.)?XXXXXXXXX.net [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
##Handling base URI of site.
RewriteRule ^/?$ pb/ [R=301,L]
##Blocking pb uri pages non existing ones.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^pb/ - [NC,L]
##making all uris which are files to pb folder.
RewriteCond %{DOCUMENT_ROOT}/pb/$1 -f
RewriteRule ^(. )/?$ pb/$1 [L]
##Making non existing uris to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ pb/index.php?path=$1 [L,QSA]
order deny,allow
deny from all
allow from XX.XXX.XXX.XX
JS/CS переписать/перенаправить:
Возможно, вам потребуется использовать базовый тег для исправления js и других соответствующих ресурсов. Если вы связываете файлы js, используя относительный путь, то файл, очевидно, получит 404, потому что он ищет URL-путь. например, если путь к URL-адресу /file/ вместо file.html затем ваши относительные ресурсы загружаются из /file/, который не является каталогом, а переписанным html-файлом. Чтобы исправить это, сделайте ваши ссылки абсолютными или используйте базовый тег. В заголовке вашей веб-страницы добавьте это <base href="/">
, чтобы ваши относительные ссылки могли загружаться из правильного места.