.htaccess блокирует CSS, javascript и изображения от получения доступа из подкаталога. - PullRequest
0 голосов
/ 21 декабря 2018

Я ищу это, но ни одно решение не помогло мне.Я уже пробовал много разных «решений» отсюда, но ни одно из них не сработало.

Я установил WordPress в основной корневой каталог своего домена, например, на example.com/index.php
, так что у меня есть.htaccess для WordPress в корневом каталоге example.com:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

, после этого я устанавливаю другой PHP-скрипт в подкаталог основного домена, например, example.com/app/index.php

Сценарий .htaccess for PHP в подкаталоге example.com/app/index.php:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]

RewriteEngine On
RewriteBase /
# RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
# RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# RewriteCond %{HTTPS} off
# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule ^search/(.+)$ /search.php?q=$1
RewriteRule ^search/([^/]*?)/page/([^/]*?)/$ /search.php?q=$1&token=$2
RewriteRule ^search/([^/]*?)/$ /search.php?q=$1
RewriteRule ^download/([^/]*?)/page/([^/]*?)/$ /search.php?q=$1&token=$2
RewriteRule ^download/([^/]*?)/$ /search.php?q=$1
RewriteRule ^watch/(.+)$ /watch.php?id=$1  [L]
RewriteRule ^home/(.+)$ /index.php?q=&page=$1 [L]
RewriteRule ^(cache/|submit\.php|head\.php|head_mobile\.php|foot\.php|foot_mobile\.php|includes\.php|config\.php) - [F,L,NC]
RewriteRule ^sitemap.xml$ /sitemap.php [L]
RewriteRule ^dmca$ /dmca.php
RewriteRule ^privacy$ /privacy.php
RewriteRule ^contact$ /contact.php

Теперь мой сценарий PHP работает неправильно и все файлы, включая CSS,JS, изображения не доступны внутри подкаталога, в котором установлен PHP-скрипт.

Я хочу URL-адреса должны быть такими:

https://example.com/app/watch/wVS-hHZsAIg
https://example.com/app/contact-us
https://example.com/app/dmca
https://example.com/app/css/style.css

Но все вышеупомянутые URL-адреса не работают, а также этоперенаправьте на страницу установки WordPress и выдайте ошибку 404, например:

https://example.com/watch/wVS-hHZsAIg
https://example.com/contact-us
https://example.com/dmca
https://example.com/css/style.css

МОЙ CSS, JS и другие относительные ресурсы не работают.это проблема.

И .htaccess блокирует доступ к CSS, javascript и изображениям посредством example.com/app/index.php

.

1 Ответ

0 голосов
/ 21 декабря 2018
RewriteRule ^watch/(.+)$ /watch.php?id=$1  [L]

Все ваши изменения (например, приведенные выше) переписывают URL-адрес корня документа, где установлен WordPress.Таким образом, запрос на /app/watch/wVS-hHZsAIg переписывается на /watch.php?id=wVS-hHZsAIg (согласно вышеуказанной директиве), который, как я полагаю, не существует, поэтому он будет перенаправлен через WordPress, что приведет к 404.

Для этогоДля работы файла .htaccess в подкаталоге /app необходимо удалить префикс косой черты из всех строк substitution .Например, приведенная выше директива должна выглядеть следующим образом:

RewriteRule ^watch/(.+) watch.php?id=$1 [L]

(Конечный $ на шаблоне RewriteRule является излишним.)

https://example.com/app/contact-us

Директивы, которые вы опубликовали, ищут contact, а не contact-us - так что это может не иметь отношения к вышеупомянутому.

https://example.com/app/css/style.css

Опять же, это не связанок вышесказанному.И, вероятно, это вызвано неправильными URL-путями в вашем HTML.Если вы ссылаетесь на свой CSS с помощью корневого URL-адреса в форме /css/style.css, это не сработает.Вам нужно либо сделать относительный URL-путь (т.е. удалить префикс косой черты, как в директивах mod_rewrite в .htaccess), либо включить полный URL-путь в ссылку (предпочтительно).(Это противоположно тому, на что @starkeen ссылается в комментариях.)

См. Также, этот связанный вопрос на statck для веб-мастеров:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...