jkm

Рейтинг
120
Регистрация
20.02.2014

Эта конструкция кроме главной зацепит и все внутренние страницы.


RedirectMatch 301 ^/$ http://mydomain.ru/page.html


RewriteCond %{SCRIPT_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html [L]

ErrorDocument 404 /errors/404.html


RewriteEngine On

RewriteCond %{REQUEST_URI} =/page1 [OR]
RewriteCond %{REQUEST_URI} =/page2 [OR]
RewriteCond %{REQUEST_URI} =/page3 [OR]
RewriteCond %{REQUEST_URI} =/page4 [OR]
RewriteCond %{REQUEST_URI} =/page5 [OR]
RewriteCond %{REQUEST_URI} =/page6 [OR]
RewriteCond %{REQUEST_URI} =/page7 [OR]
RewriteCond %{REQUEST_URI} =/page8 [OR]
RewriteCond %{REQUEST_URI} =/page9 [OR]
RewriteCond %{REQUEST_URI} =/page10
RewriteRule ^ http://site.biz%{REQUEST_URI} [L,R=301]

RewriteRule ^ http://site.biz/? [L,R=301]

Данные правила будут одинаково работать в корне и в папке, так что тут зависит от предпочтений.

Тут может помочь включение буферизации вывода http://php.net/manual/ru/function.ob-start.php


<?php

function callback($buffer)
{
return preg_replace('~<div id="name">.*</div>~Uis', '', $buffer);
}

ob_start("callback");

Если вставлять это в самом начале index.php, то функция callback получит сгенерированную страницу и может полностью её поменять.

Еще есть вариант подключить файл с этим кодом без редактирования файлов CMS используя директиву auto-prepend-file

old.ru/board/ => new.ru/

old.ru/board/page => new.ru/

Или такой вариант

old.ru/board/ => new.ru/

old.ru/board/page => new.ru/page

Если делать средствами mod_alias, то для первого варианта правило


RedirectMatch 301 ^/board/ http://new.ru/

Для второго


Redirect 301 /board/ http://new.ru/

Другой вариант отдавать код 403 Forbidden


RewriteRule (?<![^/])undefined - [L,F]

Предполагалось что в переменной $fp уже есть искомый текст в <div class="mtext">

$fp = file_get_contents('index.html');


RewriteRule (?<![^/])undefined 404.shtml [L]

Ставить в самом верху сразу после RewriteEngine On

Хотя так получится, что для этих страниц будет код ответа 200. Лучше так


ErrorDocument 404 /404.shtml
RewriteRule (?<![^/])undefined - [L,R=404]


if (preg_match('~<div class="mtext">(.*)</div>~siU', $fp, $match)) {

$text = substr($match[1], 0, 23);
// Если текст в кодировке UTF-8
// $text = mb_substr($match[1], 0, 23, 'UTF-8');

echo trim($text);

preg_match('~\s*\K(?:\s*\S+){0,5}~', $match[1], $result);

echo "<br>\n", $result[0];
}
Всего: 749