gormarket

gormarket
Рейтинг
47
Регистрация
29.12.2010

строку

RewriteCond %{REQUEST_FILENAME} .*\.jpg

можно выкинуть (Вы все равно проверяете что это jpg в следующей строке), а вместо нее поставить проверку, что в имени запрошенного файла не содержится "-small".

Дело в том, что Вы преобразуете имя файла, добавляя в него "-small" и не меняя каталога файла.

И после третьей строки (с флагом [L]) у Вас запрашивается файл в том же каталоге и к нему снова применяются все строки из того-же файла .htaccess (если б Вы сменили каталог, файл .htaccess был бы другой), и в него еще раз добавляется "-small".

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


RewriteCond %{HTTP_REFERER} ^http://.*\.livejournal\.com/?.* [NC]
RewriteCond %{REQUEST_URI} !.*-small\.jpg
RewriteRule ^(.*)\.jpg$ $1-small.jpg [L]

Если не найдете решение проблемы, можно ее обойти, заменив "%C2%AB" (и другие уникодные символы) шаблоном ".{1,2}"


RewriteRule ^2008/01/28/mixail-pogrebinskij-.{1,2} http://mysite.com/news/500/

Почему {1,2} ?

У меня на локальном сервере mod_rewrite воспринимает %C2%AB как два символа, но для гарантии я допустил что может быть и один символ.

ptraf:

Вся загвоздка была вот в чем на последнем зеркале не нужно прописывать "[OR]"

Виноват, лопухнулся с копированием\вставкой при написании первого варианта кода.

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

zagred:
... вы многим упростите жизнь, если укажете, где тут в коде главное зеркало.

domain.com (без www) здесь главное зеркало (или основной домен при использовании другой терминологии)

поискал в сети про склейку, например

http://zweroboy.net/domeny/sklejjka-domenov.html

не нашел больших отличий от данного случая, но там все работает

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

И преобразуется домен не в osnovnoidomen.ru, а в zerkalo2.ru (или другое из зеркал). Возможно это будет видно в файле логов сервера access_log. Советую Вам зайти на некую страничку домена osnovnoidomen.ru и после этого посмотреть access_log (какой домен записался там для данного запроса). Если там будет записан другой домен, то нужно либо его делать основным, либо что-то менять в настройках в админке хостинга.

ptraf:
куда этот редирект пихать?

Однозначно перед началом любых преобразований (в данном случае сразу после строки "RewriteEngine On")

Иначе посетители будут переадресованы на уже преобразованный адрес (index.php с параметрами).

А вот почему не работает, не понимаю...

Приведенные выше строки файла .htaccess никак не должны повлиять на это.

Проблема в чем-то другом.

ptraf:
Moved Permanently
The document has moved here. (под словом "here" ссылка на основной домен...

Такое возможно, но не из-за ошибки на сервере, а из-за браузера. Мне известно о таких случаях с оперой. Если в опере отключено автоматическое перенаправление, то на страницах с перенаправлением она будет показывать 302 document has moved here. И переход происходит только после клика по ссылке под этим сообщением. Лечится изменением настроек оперы.

ptraf:
... ошибка выдается даже на основном домене)...

Надеюсь у Вас 5 зеркал и шестой основной домен (он не входит в число "5 зеркал" и не вставлен в одно из правил RewriteCond) :)

А если серьезно, то при наличии еще каких-то строк с операторами после

RewriteRule ^(.*)$ http://osnovnoidomen.ru/$1 [R=301,L]

эти последующие строки могут при некоторых условиях вступать в конфликт с результатами предыдущих преобразований. Что там у Вас еще есть, неизвестно. Например, если дальше встречаются строки

Alias .....

то нужно как-то их обойти (нужно читать мануалы)

И дополнительно:

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


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

У Вас картинка отображается как строчный элемент (по умолчанию:inline) и центрируется соответственно по базовой линии текста.

Вот и зазор появляется в некоторых браузерах.

Чем больше размер шрифта, тем больше зазор. Можно сделать шрифт 1рх, но все равно может быть криво.

Лучше сделать img блочным элементом, добавив для него "display:block;"

Или в стилях пропишите

#page img {

display:block;

}

Неправильно.

В приведенном Вами коде все условия RewriteCond объединятся оператором AND (он используется по умолчанию, если не указан OR) и в результате правило RewriteRule никогда не выполнится (не может быть HTTP_HOST одновременно быть равен всем пяти зеркалам).

Нужно так


RewriteEngine On
RewriteCond %{HTTP_HOST} ^zerkalo1\.ru$ [NC,OR]
RewriteCond %{HTTP_HOST} ^zerkalo2\.ru$ [NC,OR]
RewriteCond %{HTTP_HOST} ^zerkalo3\.ru$ [NC,OR]
RewriteCond %{HTTP_HOST} ^zerkalo4\.ru$ [NC,OR]
RewriteCond %{HTTP_HOST} ^zerkalo5\.ru$ [NC,OR]
RewriteRule ^(.*)$ http://osnovnoidomen.ru/$1 [R=301,L]

или сделать одно условие


RewriteEngine On
RewriteCond %{HTTP_HOST} ^(zerkalo1|zerkalo3|zerkalo3|zerkalo4|zerkalo5)\.ru$ [NC]
RewriteRule ^(.*)$ http://osnovnoidomen.ru/$1 [R=301,L]

а для поисковиков сделать robots.txt


User-agent: *
Allow: /index.html
Disallow: /

(разрешить index.html и запретить все остальное)

то, что есть папка beta, в robots.txt лучше не светить...

Это задается одним из параметров метода getURL в коде самой флешки при ее создании

getURL(URL, window)

где window может иметь значения "_self", "_blank", "_parent", "_top" или имя окна

Всего: 437