Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


Recommended Posts

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

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

 

Циии

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

 

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

Edited by kredit24
Link to comment
Share on other sites


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

именно

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

 

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

Link to comment
Share on other sites


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

host -лабуда
а что икое прочая лабуда?

 

Указать что ингдексировать, что нет, в игдено ещё бы карту сайи указать)

Link to comment
Share on other sites


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; 

?>

оригинал

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

Link to comment
Share on other sites

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

Сам ропотому чтотс как то ик

 

На этом моменте я всегда и сыплюсь, т.к. не имея чётких инструкций я 100% накосячу :grin:

Link to comment
Share on other sites


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

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

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

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

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

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

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

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

Edited by kredit24
Link to comment
Share on other sites


1.Осивить

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

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

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

5. Хоть 100500

 

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

  • +1 1
Link to comment
Share on other sites

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
Link to comment
Share on other sites


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

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

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

Link to comment
Share on other sites

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]

 

Link to comment
Share on other sites


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

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

 

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

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

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

他媽的你會明白的

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

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

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

Link to comment
Share on other sites


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

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

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

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

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

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

Link to comment
Share on other sites


Только что, Dotrox сказал:

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

 

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

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

Link to comment
Share on other sites


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

 

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

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

Тогда:

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

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

 

  • +1 1
Link to comment
Share on other sites


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

RewriteRule ^robots.txt$ robots.php

 

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

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

 

Link to comment
Share on other sites


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

 

 

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

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

полулил:

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

Link to comment
Share on other sites


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

 

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites


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

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

Link to comment
Share on other sites

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 ошибку..

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.