- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Не могу настроить запрет открытия сайта из поддериктории /sites/сайт/, /sites/сайт2/ и т.д.
Настроил работу на поддомене по адресу сайт.домен.ру, сайт2.домен.ру, но они по прежнему доступны и по адресу домен.ру/sites/сайт/...
Как запретить работу домен.ру/sites/сайт/, чтобы работали только поддомены?
Встречаются еще адреса вида сайт2.домен.ру/pages/contact, необходимо чтобы они тоже работали, просто была проблема с этим, работали сайт2.домен.ру, сайт2.домен.ру/pages а сайт2.домен.ру/pages/contact не хотели работать.
p.s. есть возможность в каждый сайт вставить нужный .htaccess, ну и в корень основного домена тоже.
Спасибо!
Мой корневой .htaccess
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.сайт\.ru$
RewriteRule ^(.*)$ sites/%2/$1 [QSA,L]
RewriteCond %{REQUEST_URI} !api\\dispatch\.php$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^api/.* api/dispatch.php [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
.htaccess внутри /sites/сайт/
Options -Indexes
RewriteEngine On
ErrorDocument 400 /page/error
ErrorDocument 401 /page/error
ErrorDocument 403 /page/error
ErrorDocument 404 /page/error
ErrorDocument 500 /page/error
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Встречаются еще адреса вида сайт2.домен.ру/pages/contact, необходимо чтобы они тоже работали,
Уже слишком много условий получается, и кривой костыль.
Или вы настраиваете чтобы все работало только на поддоменах и ставите редирект, либо запрещаете в роботс /sites/
Перед
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.сайт\.ru$
RewriteRule ^(.*)$ sites/%2/$1 [QSA,L]
Добавить
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^sites/([^/]+)/(.*) http://$1.сайт.ру/$2 [R=301,L]
Либо более крутой вариант с проверкой если есть каталог поддомена
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{DOCUMENT_ROOT}/sites/$1/ -d
RewriteRule ^sites/([^/]+)/(.*) http://$1.site.ru/$2 [R=301,L]
siv1987, пробовал оба ваших варианта, стало вроде лучше чем было
Но старые адреса так и работают
Меня и такой вариант устроил бы, если главная страничка сайта будет работать.
Может у вас есть еще какие варианты? Или подскажите как выполнить правильный редирект.
Apache и Nginx, тоже ковырял, VirtualDocumentRoot прописывал, что-то получается, что-то нет, все на половину :(
server в nginx.conf
listen 0.0.0.0:80;
server_name site.ru *.site.ru;
rewrite ^(/manager/.*)$ https://$host$1 permanent;
error_page 404 = @fallback;
location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/) {
proxy_pass http://0.0.0.0:8080;
proxy_redirect http://site.ru:8080/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
proxy_pass http://0.0.0.0:8080;
proxy_redirect http://site.ru:8080/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
root /var/www/github/data/www/site.ru;
access_log /var/www/httpd-logs/site.ru.access.log ;
access_log /var/www/nginx-logs/github isp;
}
location @fallback {
proxy_pass http://0.0.0.0:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
Вообще-то выше и есть редирект. Что тогда вроде лучше стало?..
При вводе не верного адреса, редиректило на его не существующий поддомен, все.
RewriteRule ^sites/([^/]+)/(.*) http://$1.github.ru/$2 [R=301,L]
домен.ру/sites/сайт7/ папки этой не существует, при ее запросе, редиректит на сайт7.домен.ру - 404 Not Found
Что-то я все равно не пойму, проблема в чем? Редирект есть, работает? Вы сказать можете что работает и что не работает? Редирект выше и был написан для таких случаях.
1. сайт доступен по 2 адресам, но это терпимо, действительно, можно и в robots.txt запретить.
2. сейчас и редирект пропал
3. стили слетают из-за чего-то, сайт читаем но выглядит не так как должен.
4. если прописываю VirtualDocumentRoot...../sites/%1
поддомены работают, стили не работают, test2.домен.ру/blog, test2.домен.ру/page/contact не работают, главная страница сайта вообще не открывается 404 :(
......
Еще видимо браузер кэширует, вовремя не могу среагировать на изменения, теперь не могу сообразить, какой из ваших кодов осуществлял редирект с не существующей папки на не существующий поддомен.
По каким адресам? Так редирект работает или нет?
Почистите кеш браузера, используйте не крутой вариант который без проверки.
Стили и все остальное ваша проблема настроить должным образом.
Редиректа нет вообще (на данный момент).
Зашел с другого браузера, нет редиректа ни с не существующего домена, ни с существующего (открывает в подпапке).
Использовал .htaccess без проверки.
---------- Добавлено 22.03.2014 в 13:05 ----------
Странно, был редирект пусть и не тот, и нет его.
(домен.ру/sites/сайт7/ папки этой не существует, при ее запросе, редиректит на сайт7.домен.ру - 404 Not Found)
Остановился на своем варианте
Options -Indexes
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.сайт\.ru$
RewriteRule ^(.*)$ sites/%2/$1 [QSA,L]
RewriteCond %{REQUEST_URI} !api\\dispatch\.php$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^api/.* api/dispatch.php [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
т.к. он работает также как и ваш, сайт доступен по двум адресам.
Хотел попросить вас siv1987, оценить данный код .htaccess он верный?
Какой все же посоветуете использовать?
С отображением сайта так и не разобрался, все стили и скрипты доступны по обеим адресам (домен, поддомен), а внешний вид на поддомене теряется, первый раз с таким столкнулся, не пойму в чем дело.