Jump to content

Recommended Posts

Posted (edited)

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

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

 

Цитата

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

 

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

Edited by kredit24

Share this post


Link to post
Share on other sites
7 минут назад, kredit24 сказал:

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

именно

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

Share this post


Link to post
Share on other sites
8 минут назад, chukcha сказал:

именно

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

 

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

Share this post


Link to post
Share on other sites
12 минут назад, kredit24 сказал:

host и прочую лабуду

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

  • +1 2

Share this post


Link to post
Share on other sites
2 минуты назад, chukcha сказал:

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

 

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

Share this post


Link to post
Share on other sites
7 минут назад, kredit24 сказал:

в идеале ещё бы карту сайта указать)

в вебмвстере

Share this post


Link to post
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; 

?>

оригинал

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

Share this post


Link to post
Share on other sites
29 минут назад, Tom сказал:

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Posted (edited)
3 минуты назад, Tom сказал:

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

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

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

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

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

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

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

Edited by kredit24

Share this post


Link to post
Share on other sites

1.Оставить

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

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

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

5. Хоть 100500

 

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

  • +1 1

Share this post


Link to post
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

Share this post


Link to post
Share on other sites
7 часов назад, Yoda сказал:

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

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

Share this post


Link to post
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]

 

Share this post


Link to post
Share on other sites
1 минуту назад, Dotrox сказал:

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

 

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

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

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

他媽的你會明白的

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

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

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

Share this post


Link to post
Share on other sites
1 час назад, kredit24 сказал:

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

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

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

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

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

Share this post


Link to post
Share on other sites
Только что, Dotrox сказал:

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

 

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

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

Share this post


Link to post
Share on other sites
17 минут назад, kredit24 сказал:

 

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

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

Тогда:

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

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

 

  • +1 1

Share this post


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

 

Share this post


Link to post
Share on other sites

 

Share this post


Link to post
Share on other sites
9 минут назад, klaos27 сказал:

 

 

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

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

получил:

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

Share this post


Link to post
Share on other sites
5 минут назад, kredit24 сказал:

 

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

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

Share this post


Link to post
Share on other sites
3 минуты назад, klaos27 сказал:

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

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

Share this post


Link to post
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

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

Share this post


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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.