** СМОТРЕТЬ ОБНОВЛЕНИЕ НИЖЕ *****
Мой основной сайт домена должен обслуживаться из подкаталога на моем сервере, который называется так же, как домен, так что, вероятно, будет непросто читать в этом грязном блоке моего webroot .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# remove www
RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule ^.*$ %1 [NC,QSA,R=301]
#RewriteCond %{ENV:REDIRECT_STATUS} . [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?my\-web\.agency$
RewriteRule ^my-web.agency/ - [L,R=404]
RewriteRule !^my-web.agency/ my-web.agency/%{REQUEST_URI} [NC,QSA]
</IfModule>
Я просто работал над этим так долго, изменяя правила и структурируя, что это искажение - то, что я получаю в настоящее время.
Www. ОСТАЕТСЯ, так что немного убрать его совсем неэффективно.
!^ my-web.agency/ rule действительно действительно эффективно обслуживает веб-сайт. ОДНАКО, моя следующая попытка рендеринга 404, если подкаталог включен в URI FAILS.
Пожалуйста, объясните мне, как все это исправить. Я пытаюсь читать документы, изучать и выяснять это, но почему-то я просто не могу, и я уже уделил этому достаточно времени, мне действительно нужно остановиться, пожалуйста, помогите, я буду всегда благодарен учиться и принимать к сведению. Спасибо много.
***** ОБНОВЛЕНИЕ:** Теперь у меня есть
# remove www, externally for consistent domains (successful)
RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule .* http://[[percent]]1/$0 [NS,L,R=301,QSA]
RewriteCond %{HTTP_HOST} ^(www\.)?my\-web\.agency$
RewriteCond %{REQUEST_URI} ^my-web.agency
RewriteRule ^(.*)$ - [R=404,L,NC]
RewriteCond %{HTTP_HOST} ^(www\.)?my\-web\.agency$
RewriteCond %{REQUEST_URI} !^my-web.agency
RewriteRule ^(.*)$ /my-web.agency/$1 [L,NC,QSA]
Это действительно делает WWW. исчезнуть при попытке. Но все ВНУТРЕННИЕ ССЫЛКИ ВСЕ ЕЩЕ ВКЛЮЧАЮТ подкаталог, который должен быть скрыт (например, внутренние ссылки читаются как « http://my-web.agency/my-web.agency/somepage »), и доступ к страницам с подкаталогом в URI все еще работает; Я бы предпочел вернуть 404.
DocumentRoot или RewriteBase кажутся логичными возможными решениями, если бы я только мог понять правильную реализацию.
([[percent]]
исходящий http:// в 1-ом RewriteRule - разрешить его через редактор без выдачи ошибки; просто указывает %
.)