Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Мультимагазин и Robots.txt


Recommended Posts

Подскажите, есть ли готовое решение для этой задачи? Хочу сделать региональные поддомены, для каждого нужен роботс, но у меня в качестве поддоменов выступают "псевдонимы" , т.е. физически папок для роботса нет.

Плюс на одном из форумов встретил ещё одну проблему, связанную с https:

 

Цитата

Проблем оказалось несколько. Во первых при классических настройках редиректа на HTTPS протокол, во всех мануалах и советах механизм редиректа осуществляется при помощи проверки, на какой порт стучится запрос, и если это не 443, то весь трафик виртуалхоста гониться на необходимый нам редирект вида https://site.com.

 

подскажите, это реальная проблема или выдуманная?)

Змінено користувачем kredit24
Надіслати
Поділитися на інших сайтах


7 минут назад, kredit24 сказал:

или выдуманная?)

именно

А с другой стороны, зачем вам разные robots

Надіслати
Поділитися на інших сайтах

8 минут назад, chukcha сказал:

именно

А с другой стороны, зачем вам разные robots

 

Для того, что бы прописать там host и прочую лабуду, разве для яши это не мегаважный документ?

Надіслати
Поділитися на інших сайтах


1 час назад, kredit24 сказал:

Подскажите, есть ли готовое решение для этой задачи?

Создаёте файл robots.php

В htaccess  добавляете 

RewriteRule ^robots.txt$ robots.php

Сам роботс как то так

<?php 

$server = $_SERVER['SERVER_NAME']; 

$text = "User-agent: * 

Disallow: ......

здесь ваши значения

Host: $server 

Sitemap: http://$server/sitemap.xml "; 

header("Content-Type: text/plain"); 

echo $text; 

exit; 

?>

оригинал

Проверял сам на мульти магазинах.

Надіслати
Поділитися на інших сайтах

Взять директивы из дефолтного robots.txt , иными словами все нужные запреты и разрешения. Не знаю как ещё проще обьяснить.

Надіслати
Поділитися на інших сайтах

3 минуты назад, Tom сказал:

Взять директивы из дефолтного robots.txt , иными словами все нужные запреты и разрешения. Не знаю как ещё проще обьяснить.

Это как раз понятно, я про:

1. Оригинальный роботс удалить или оставить

2. ['SERVER_NAME'] - сюда поддомен нужно вписать? в какой формате?

3. что значат эти строчки - header("Content-Type: text/plain");  echo $text;

4. как разместить информацию ещё, например о 50 поддоменах

5. ещё не придумал, но уверен и 55 будет :shock:

Змінено користувачем kredit24
Надіслати
Поділитися на інших сайтах


1.Оставить

2.Не трогать.

3.Забить и не вникать

4.Само подставится

5. Хоть 100500

 

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

  • +1 1
Надіслати
Поділитися на інших сайтах

8 часов назад, Tom сказал:

Создаёте файл robots.php

В htaccess  добавляете 


RewriteRule ^robots.txt$ robots.php

Сам роботс как то так


<?php 

$server = $_SERVER['SERVER_NAME']; 

$text = "User-agent: * 

Disallow: ......

здесь ваши значения

Host: $server 

Sitemap: http://$server/sitemap.xml "; 

header("Content-Type: text/plain"); 

echo $text; 

exit; 

?>

оригинал

Проверял сам на мульти магазинах.

 

Глупый соввет - не SERVER_NAME - а HTTP_HOST

Так как SERVER_NAME - это немного не то!

 

По факту. Делаете вот такой файл robots

<?php

$https = 'http';
if ((isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == '1' || $_SERVER['HTTPS'])) || (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && (strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') || (!empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on'))) {
    $https = 'https';
}

$server = $_SERVER['HTTP_HOST'];

$host = $https . '://' . $server;

$text =  "
User-agent: *
Disallow: /*route=account/
Disallow: /*route=affiliate/
Disallow: /*route=checkout/
Disallow: /*route=product/search
Disallow: /index.php?route=product/product*&manufacturer_id=
Disallow: /admin
Disallow: /catalog
Disallow: /download
Disallow: /system
Disallow: /*?sort=
Disallow: /*&sort=
Disallow: /*?order=
Disallow: /*&order=
Disallow: /*&limit=
Disallow: /*?filter_name=
Disallow: /*&filter_name=
Disallow: /*?filter_sub_category=
Disallow: /*&filter_sub_category=
Disallow: /*?filter_description=
Disallow: /*&filter_description=
Disallow: /*?tracking=
Disallow: /*&tracking=
Disallow: /*?mfp=
Disallow: /*&mfp=
Clean-param: tracking
Sitemap: $host/sitemap.xml
";


header("Content-Type: text/plain");
echo $text;
exit;

?>

Сохраняете это как robots.php в корень.

В htacess прописываете

 

 

RewriteCond %{REQUEST_URI} !robots\.txt
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Радуетесь!


И не слушайте советчиков, которые рассказывают про то что руками сайтмапы. На 50-100 поддоменов пусть сам сайтмапы руками в вебмастере регистируют.

 

 

  • +1 1
Надіслати
Поділитися на інших сайтах


7 часов назад, Yoda сказал:

И не слушайте советчиков, которые рассказывают про то что руками сайтмапы

Правильный совет. -  Никогда не заходите в внбмастер - там вам делать нечего. Зачем? Вам не нужно ничего там отслеживать, прописывать, контролировать etc

Надіслати
Поділитися на інших сайтах

17 часов назад, kredit24 сказал:

Плюс на одном из форумов встретил ещё одну проблему, связанную с https:

 

Цитата

Проблем оказалось несколько. Во первых при классических настройках редиректа на HTTPS протокол, во всех мануалах и советах механизм редиректа осуществляется при помощи проверки, на какой порт стучится запрос, и если это не 443, то весь трафик виртуалхоста гониться на необходимый нам редирект вида https://site.com.

А в чём именно тут проблема?

Если речь о том, что кто-то в редирект хардкодит домен вместо того, чтоб подставлять его из запроса - это не проблема, а нехватка опыта. И туда же - напрямую проверять порт.

 

Вот вам редирект, который будет работать без проблем с поддоменами:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

 

Надіслати
Поділитися на інших сайтах


1 минуту назад, Dotrox сказал:

А в чём именно тут проблема?

 

Проблема в том, что такие директивы:

^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

я вижу примерно так:

他媽的你會明白的

Поэтому я не могу даже оценить найденную на просторах рунета инфу :ugeek: 

Поэтому и переспрашиваю всё у знающих людей)

А на счёт редиректа, его нужно вставить вместо чего то или дополнительно к тому, что уже есть?

Надіслати
Поділитися на інших сайтах


1 час назад, kredit24 сказал:

А на счёт редиректа, его нужно вставить вместо чего то или дополнительно к тому, что уже есть?

Я не знаю, что у вас там есть.

Если никаких редиректов для https нет, то вставлять просто под "RewriteBase /" и больше ничего не трогать.

Если редирект для https уже есть, то вместо него.

И нужны все три строки и именно в такой последовательности!

Надіслати
Поділитися на інших сайтах


17 минут назад, kredit24 сказал:

 

Всё по дефолту, только в настройках стоит галочка: 

Использовать SSL

Тогда:

19 минут назад, Dotrox сказал:

Если никаких редиректов для https нет, то вставлять просто под "RewriteBase /" и больше ничего не трогать.

 

  • +1 1
Надіслати
Поділитися на інших сайтах


  • 4 weeks later...
В 14.06.2019 в 02:00, Yoda сказал:

RewriteRule ^robots.txt$ robots.php

 

В 14.06.2019 в 02:00, Yoda сказал:

RewriteCond %{REQUEST_URI} !robots\.txt RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

 

Почему то не первый не второй вариант не работает, в первом случае происходит перенаправление на site.ru/index.php?_route_=robots.txt и вылетает "Запрашиваемая страница не найдена!" Во втором даже сайт не открывается, пишет: "Страница недоступна Сайт site.ru выполнил переадресацию слишком много раз."

Подскажите плиз, где засада? Мой текущий .htaccess настроен по дефолту:

# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.

# 2. In your opencart directory rename htaccess.txt to .htaccess.

# For any support issues please visit: http://www.opencart.com

Options +FollowSymlinks

# Prevent Directoy listing
Options -Indexes

# Prevent Direct Access to files
<FilesMatch "(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))">
 Require all denied
## For apache 2.2 and older, replace "Require all denied" with these two lines :
# Order deny,allow
# Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that.

# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off

# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off

# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M

# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M

# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200

# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200

# 7. disable open_basedir limitations
# php_admin_value open_basedir none

 

Надіслати
Поділитися на інших сайтах


9 минут назад, klaos27 сказал:

 

 

Не очень понял, что в этой теме надо использовать, попробовал прописать как там:

<IfModule mod_rewrite.c>
  RewriteRule ^robots.txt$ robots.php
...
</IfModule>

получил:

500 ошибка
(Internal server error)

Надіслати
Поділитися на інших сайтах


5 минут назад, kredit24 сказал:

 

Не очень понял, что в этой теме надо использовать, попробовал прописать как там:

Первый пункт тоже необходим

Надіслати
Поділитися на інших сайтах

4 минуты назад, kredit24 сказал:

Первый пункт это создание файла robots.php ? Если да, то он есть у меня)

Делал недавно. Все по инструкции в сообщении выше.

Еще у меня в htaccess прописано следующее после RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

RewriteRule ^robots.txt$ robots.php

Все работает нормально.

Надіслати
Поділитися на інших сайтах

41 минуту назад, klaos27 сказал:

Делал недавно. Все по инструкции в сообщении выше.

Еще у меня в htaccess прописано следующее после RewriteBase /


RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

RewriteRule ^robots.txt$ robots.php

Все работает нормально.

Это прописано в дополнении к 

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

или вместо? Я просто добавил к тому, что есть и опять получил 500 ошибку..

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.