виртуальный robots.txt

K
На сайте с 28.12.2008
Offline
169
1876

хочу мапить запросы на несуществующий файл robots.txt на файл robots.php

такой код в htaccess правильный?

RewriteEngine on
RewriteCond %{robots.txt} !-f [NC]
RewriteRule robots.txt robots.php [L]

kusanagi добавил 30-04-2011 в 11:04

и еще, если файл robots.txt существует то чтобы не мапилось

а тут мапится в любом случае

П
На сайте с 08.06.2007
Offline
63
#1

Себе пишу как раз, в боевых условиях ещё не испытывал.

#>>>>> если есть robots.txt для сайта

RewriteCond %{REQUEST_URI} ^/robots.txt$
RewriteCond %{DOCUMENT_ROOT}/files/robots/%{HTTP_HOST}.txt -f
RewriteRule ^(.+)$ files/robots/%{HTTP_HOST}.txt [L,QSA]

Далее

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?r=$1 [L,QSA]

Ну и если бла бла бла, генерируем автоматом. С возможностью правки руками для каждого из сайтов.

И для favicon держи, может пригодится

#>>>>> если есть иконка для сайта

RewriteCond %{REQUEST_URI} ^/favicon.ico$
RewriteCond %{DOCUMENT_ROOT}/files/ico/%{HTTP_HOST}.ico -f
RewriteRule ^(.+)$ files/ico/%{HTTP_HOST}.ico [L,QSA]

#>>>>> если родной нет, но есть по умолчанию
RewriteCond %{REQUEST_URI} ^/favicon.ico$
RewriteCond %{DOCUMENT_ROOT}/files/ico/default.ico -f
RewriteRule ^(.+)$ files/ico/default.ico [L,QSA]
K
На сайте с 28.12.2008
Offline
169
#2

спс за идею

kusanagi добавил 30-04-2011 в 11:52

вот мой новый код

RewriteEngine on

RewriteCond %{REQUEST_URI} ^/robots.txt$
RewriteCond %{DOCUMENT_ROOT}/robots.txt !-f
RewriteRule robots.txt robots.php [L]

я только не пойму зачем нужно явно указывать RewriteCond %{DOCUMENT_ROOT}/robots.txt !-f

без этого robots.txt не находился, получается этот файл ищется гдето еще? а где?

П
На сайте с 08.06.2007
Offline
63
#3
kusanagi:
спс за идею

А вот от поддержки sitemap, по такому же принципу, пока отказался.

Решил что к нему обращаются не так часто, отдавать с помошью ....iteRule ^(.*)$ index.php?r=$1 [L,QSA], правда с кешированием. Ну а там видно будет.

я только не пойму зачем нужно явно указывать RewriteCond %{DOCUMENT_ROOT}/robots.txt !-f

UP. Если честно, .htaccess, по большей части, для меня остаётся тёмным лесом, не так часто приходится им заниматься.

Спасибо за замечание, позже уделю этому ещё внимание.

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

Так что.. Сейчас меня спрашивать бесполезно)))

K
На сайте с 28.12.2008
Offline
169
#4

еще интереснее

оказывается %{DOCUMENT_ROOT}/robots.txt ищет в верхней папке, выше текущего сайта, а там есть свой robots.txt

интересно как же проверить robots.txt в текущей папке сайта

kusanagi добавил 30-04-2011 в 12:34

итак, еще один вариант

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} robots.txt
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule robots.txt robots.php [L]
П
На сайте с 08.06.2007
Offline
63
#5
kusanagi:
еще интереснее
оказывается %{DOCUMENT_ROOT}/robots.txt ищет в верхней папке, выше текущего сайта, а там есть свой robots.txt
интересно как же проверить robots.txt в текущей папке сайта

Может прикрутить ещё одну проверку, что то типа

RewriteCond %{DOCUMENT_ROOT}/robots.txt имя_папки/robots.txt , как правильно не скажу. Я о принципе.

K
На сайте с 28.12.2008
Offline
169
#6

хочу без имени папки

вот что мне надо- у меня есть общая корневая папка, и куча подпапок с сайтами. я хочу в корневом htaccess прописать правило- если нету файла роботс то взять файл пхп из корневой папки

Andreyka
На сайте с 19.02.2005
Offline
822
#7

Скорее всего alias

Не стоит плодить сущности без необходимости
K
На сайте с 28.12.2008
Offline
169
#8

это крутится на шареде, там разе есть доступ к алиас?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий