команда htaccess для предотвращения доступа к главному сайту через подкаталог?

#.htaccess #mod-rewrite #rewrite #redirect

#.htaccess #мод-перезапись #перезапись URL #перенаправление

Вопрос:

У меня настроен хостинг с главным доменом (сопоставленным с корневым веб-сайтом), а затем с несколькими дополнительными доменами (у каждого своя папка в корневом веб-каталоге). На данный момент вы можете посетить www.masterdomain.com/addondomainsubdir и попадаете на ту же страницу, что и при посещении www.addondomain.com (который сопоставляется с /public_html/addondomainsubdir). Я хочу предотвратить это, поэтому, если вы посетите www.masterdomain.com/addondomainsubdir затем он выполнит перенаправление 301 на www.addondomain.com . Новый addondomain.com сайт является одностраничным сайтом, поэтому ему не нужно отображать какие-либо дополнительные страницы.

Добавление правил к файлу htaccess в веб-корне ни на что не влияет, поскольку существует вложенный каталог, что странно, поскольку я думал, что команда htaccess должна работать, даже если есть соответствующий вложенный каталог (я пробовал следующее, которое работает, когда нет соответствующего вложенного каталога):

 RewriteRule ^addondomainsubdir?$ http://www.addondomain.com [NC,R=301,L]
  

Логически, учитывая, что он достигает этого каталога, я полагаю, что мне нужно добавить команду в файл htaccess в каталоге addondomainsubdir, однако, похоже, ничего не влияет (у меня настроены различные другие правила, и они работают нормально).

Я был бы чрезвычайно признателен, если кто-нибудь объяснит лучший способ исправить это?

Большое спасибо за вашу помощь,

Дэйв

Ответ №1:

Я знаю, что это старое сообщение, но на него так и не был получен успешный ответ. Итак, для всех вас, кто находит это через поиск, это должно выполнять то, что запрашивает OP.

Добавьте эту строку в свой .htaccess файл:

 redirect permanent /addondomainsubdir/ http://www.addondomain.com
  

Ответ №2:

Попробуйте эти правила в вашем .htaccess:

 Options  FollowSymlinks -MultiViews
RewriteEngine on

# for http
RewriteCond %{HTTP_HOST} ^(www.)?masterdomain.com$ [NC]
RewriteCond %{SERVER_PORT} =80
RewriteRule ^([^/] )/?$ http://www.$1.com/ [R=301,L]

# for https
RewriteCond %{HTTP_HOST} ^(www.)?masterdomain.com$ [NC]
RewriteCond %{SERVER_PORT} =443
RewriteRule ^([^/] )/?$ https://www.$1.com/ [R=301,L]
  

Комментарии:

1. Большое спасибо за вашу помощь, но, к сожалению, это, похоже, не имеет никакого эффекта вообще, и я действительно не уверен, почему? 🙂

Ответ №3:

Вместо того, чтобы помещать правило в ваш main .htaccess, я бы создал .htaccess для каждого дополнительного домена, поместив каждый из них в соответствующий подкаталог.

 RewriteEngine on

RewriteCond %{HTTP_HOST} masterdomain.com$ [NC]
RewriteRule ^addondomainsubdir(.*)$ http://www.addondomain.com/$1 [R=301,L]
  

Комментарии:

1. Это имеет смысл, однако, похоже, это не имеет никакого эффекта, и я не могу понять почему, я добавил ваш код к своему существующему коду в файле subdir htaccess, но www.masterdomain.com/addondomainsubdir вообще не перенаправляет. Если я посещаю его без www, то он перенаправляется из-за моего перенаправления неканонических имен хостов: rewritecond%{http_host} !^(www.([^.] ). com)?$ rewritecond %{http_host} ^(www.)?([^.] ). com перезаписывает второй%{HTTPS} ! ^в $ RewriteRule ^(.*)$ addondomain.com / $ 1 [L, R = 301], но я не могу понять, почему ваш код не работает? 🙁

2. У вас случайно нет базы перезаписи в вашем .htaccess, не так ли?