gormarket

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

Подскажем как, но сначала скажите что исправить:

1. глюк на сайте, вызывающий появление /obzory.htm/page.htm ?

2. редирект /obzory.htm/page.htm в /obzory//page.htm (чтоб эту страницу не редиректило, а оствляло как есть) ?

3. или кривое правило редиректа, применяющееся к тому, к чему не должно применяться ?

Судя по заголовку топика второе или третье.

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^(script/galleries.*[^/])/?$ $1/index.php [L]

если запрашиваемый документ папка и если начинается на "script/galleries" и может быть заканчивается слешем, то реврайт на index.php в этой папке

gormarket добавил 28.02.2011 в 14:13

Извиняюсь, не получилось отредактировать: убрал последний символ в galleries, чтоб корректно обрабатывался адрес "script/galleries/" (со слешем в конце)


RewriteCond %
{REQUEST_FILENAME} -d
RewriteRule ^(script/gallerie.*[^/])/?$ $1/index.php [L]

если запрашиваемый документ папка и если начинается на "script/gallerie" и может быть заканчивается слешем, то реврайт на index.php в этой папке

gormarket добавил 28.02.2011 в 14:15


RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(script/gallerie.*[^/])/?$ $1/index.php [L]

Как я вижу у Вас сейчас нет редиректов в .htaccess, только реврайты.

А как Вы смотрите, если сделать 301 редирект для запросов папки без файла на индексный файл в этой папке ?

Убъете сразу двух зайцев - и проблема исчезнет и дублей страниц не будет (вместо "...folder/", "...folder" и "...folder/index.php" останется только страница с index.php)

То что Вы сделали, это только освободили переменную $ для использования скриптом mootools.

А нужно еще и в коде вашего сайта заменить все обращения к jQuery через "$(..." на "jQuery(..."

В статье, ссылку на которую Вы дали, ведь написано:


// Используем jQuery
jQuery("div p").hide();
//Используем $() другой библиотеки
$("content").style.display = 'none';

А у Вас на сайте обращение и к той и к другой библиотекам осталось через $

jQuery перестал использовать $, а Вы продолжаете обращаться к нему через эту переменную.

Попробуйте такой вариант:


$text= preg_replace("/([^.]{25,}\.) /", "$1<br />", $text);

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

Число 25 взял "с потолка". Можете использовать свое значение.

Michael-5:
Но на php тоже отдает страницы.

Почему-то не помогает "http://"...

в строке

RewriteRule ^(.*)\.php http://www.example.com/$1.html [R=301,L]

php заменяется на html, а потом в следующих строках (на следующем проходе по файлу) html перезаписывается снова на php.

Можно попробовать при преобразованиях назначать переменную, и проверять ее, чтоб не произошло обратного преобразования.


RewriteEngine On
RewriteBase /
RewriteCond %{ENV:REDIRECT_WasHTML} !^yes$
RewriteRule ^(.*)\.php http://www.example.com/$1.html [R=301,L,E=WasPHP:yes]

RewriteCond %{ENV:REDIRECT_WasPHP} !^yes$
RewriteRule ^(.*)\.html $1.php [QSA,L,E=WasHTML:yes]

строку

RewriteRule ^index.html$ index.php [L,NE]

можно выкинуть, этот вариант тоже обрабатывает вторая строка (RewriteRule ^(.*).html $1.php [QSA,L])

Michael-5:
RewriteRule ^index.html$ index.php [L,NE]
RewriteRule ^(.*).html $1.php [QSA,L]

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

Чтобы не отдавались страницы с адресами на .php, а редиректило на .html, попробуйте так


RewriteRule ^(.*)\.php http://www.example.com/$1.html [R=301,L]

Тогда давайте уточним, что Вам нужно

Необходимо все страницы сайта с расширением .php перевести в .html

Я это понял так, что у Вас сейчас обращение к сайту идет на страницы

.php, а Вы хотите чтобы при этом посетителей перебрасывало на страницы с .html.

Так ?

Если так, то у Вас сайт сейчас отображает страницы, если обратиться сразу напрямую на .html ?

Michael-5:
Попробовал, не работает

У Вас реврайт включен, есть в файле .htaccess такие строки?

RewriteEngine On

RewriteBase /

Если не задана база

RewriteBase /

то без / перед $1.html работать не будет, нужно так


RewriteRule ^(.*)\.php /$1.html [R=301,L]

Вы немного перепутали: сначала идет "что есть" и затем "что нужно"


RewriteRule ^(.*)\.php $1.html [R=301,L]

(и перед точкой в регулярном выражении нужно поставить \ чтоб это была точка, а не "любой символ")

Всего: 437