%20%D0%B8%20%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B5%D0%BD%D0%BD%D0%B8%D1%85%20%D1%81%D1%81%D1%8B%D0%BB%D0%BE%D0%BA%3F.png)
**СМ. ОБНОВЛЕНИЕ НИЖЕ*****
Мой основной доменный сайт будет обслуживаться из подкаталога на моем сервере, который называется так же, как и домен, поэтому, вероятно, будет сложно читать этот запутанный блок моего 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/ действительно эффективно обслуживает веб-сайт. ОДНАКО моя следующая попытка отобразить 404, если подкаталог включен в URI, НЕ УДАЕТСЯ.
Пожалуйста, объясните мне, как все это уладить. Я пытаюсь читать документы, изучать и разбираться, но почему-то не могу, а я уже потратил на это кучу времени, мне действительно нужно остановиться, пожалуйста, помогите, я буду вечно благодарен за изучение и внимательное конспектирование. Большое спасибо.
*****ОБНОВЛЕНИЕ:** Теперь у меня есть
# 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 позволяет пропустить его через редактор без выдачи ошибки; просто указывает %
.)