Какие правила htaccess УДАЛЯЮТ подкаталог, обслуживающий сайт, с URI (404, если включен) и внутренних ссылок?

237
user163831

** СМОТРЕТЬ ОБНОВЛЕНИЕ НИЖЕ *****

Мой основной сайт домена должен обслуживаться из подкаталога на моем сервере, который называется так же, как домен, так что, вероятно, будет непросто читать в этом грязном блоке моего webroot .htaccess:

<IfModule mod_rewrite.c> RewriteEngine on RewriteBase /  # remove www RewriteCond % ^www\.(.+)$ RewriteRule ^.*$ %1 [NC,QSA,R=301]  #RewriteCond % . [OR] RewriteCond % ^(www\.)?my\-web\.agency$ RewriteRule ^my-web.agency/ - [L,R=404] RewriteRule !^my-web.agency/ my-web.agency/% [NC,QSA] </IfModule> 

Я просто работал над этим так долго, изменяя правила и структурируя, что это искажение - то, что я получаю в настоящее время.

Www. ОСТАЕТСЯ, так что немного убрать его совсем неэффективно.

! ^ My-web.agency / rule действительно действительно эффективно служит веб-сайту. ОДНАКО, моя следующая попытка рендеринга 404, если подкаталог включен в URI FAILS.

Пожалуйста, объясните мне, как все это исправить. Я пытаюсь читать документы, изучать и выяснять это, но почему-то я просто не могу, и я уже уделил этому достаточно времени, мне действительно нужно остановиться, пожалуйста, помогите, я буду всегда благодарен учиться и принимать к сведению. Спасибо много.

***** ОБНОВЛЕНИЕ: ** Теперь у меня есть

# remove www, externally for consistent domains (successful) RewriteCond % ^www\.(.+)$ RewriteRule .* http://[[percent]]1/$0 [NS,L,R=301,QSA]  RewriteCond % ^(www\.)?my\-web\.agency$ RewriteCond % ^my-web.agency RewriteRule ^(.*)$ - [R=404,L,NC]  RewriteCond % ^(www\.)?my\-web\.agency$ RewriteCond % !^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 - разрешить его через редактор без выдачи ошибки; просто указывает %.)

0
«Мой основной сайт домена должен обслуживаться из подкаталога на моем сервере, который называется так же, как домен» - так почему бы не изменить DocumentRoot для соответствия? grawity 6 лет назад 0
Потому что я буду добавлять другой домен? user163831 6 лет назад 0
Но каждый блок VirtualHost и, следовательно, каждый домен имеет свой собственный параметр DocumentRoot. grawity 6 лет назад 0

0 ответов на вопрос

Похожие вопросы