jkm

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

На первый взгляд всё работает http://sandbox.onlinephpfunctions.com/code/35b8eac340c696d9dbccf358d095e72bea47dbd4

Нужен пример текста, где не работает.

Еще хотелось бы узнать какая там версия библиотеки для работы с регулярными выражениями и какая версия PHP.


echo "PHP ", PHP_VERSION, ", PCRE ", PCRE_VERSION, "\n";

Сразу после preg_replace можно добавить вызов preg_last_error() и посмотреть номер ошибки.


var_dump( preg_last_error() );

Если текст большой возможно превышение лимитов pcre.backtrack_limit или pcre.recursion_limit.

---------- Добавлено 29.10.2016 в 10:16 ----------

Вот ещё вариант


$text = preg_replace("/<h2.*?<\/h2>(*SKIP)(?!)|(?<!\p{L})\Q{$value['faq_menu']}\E(?!\p{L})/uis", '<a href="/faq/'.$value['faq_url'].'/">\0</a>', $text);


location / {
rewrite ^(.*)$ http://newsite.ru/? permanent;
}

Или так


location / {
return 301 http://newsite.ru/;
}

Smirnof, там всё нормально.

Smirnof:
RewriteEngine on
RewriteRule ^sitemap\.xml$ /var/www/ivan/data/www/сам_скрипт/base/{HTTP_HOST}/sitemap.xml [L]

Не работает :(

Там нужен адрес относительно корня сайта или относительно той папки, где расположен файл .htaccess https://habrahabr.ru/company/sprinthost/blog/129560/

Т.е. должно быть что-то вроде

RewriteRule ^sitemap\d*\.xml$ base/site.ru/$0 [L]


RewriteEngine on

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^sitemap\d*\.xml$ base/%1/$0 [L]

Had, нужно хоть немного локализовать проблему.

Запускаете сканер на Linux или Windows и какая версия PHP?

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

AntonVVV:
редирект был только со страниц которые начинаются с index.php?..... ? А страницы по типу site.ru/viewforum.php?f=17 небыли затронуты.

RewriteCond %{THE_REQUEST} " /index\.php\?\S"

RewriteRule ^ /? [R=301,L]


RewriteEngine On

RewriteRule ^aaa$ /aaa/index.html [L]

DirectorySlash Off

Достаточно чуть доработать вариант предложенный Ladycharm. Нужно делить не по "<" а "<h2" и ограничить количество получаемых частей.


$arr = explode('<h2', $str, 3);
$arr[1] .= "<div></div>\n";
echo implode('<h2', $arr);

Еще можно регулярным выражением


echo preg_replace('/<h2.+?\K<h2/is', "<div></div>\n\\0", $str, 1);
Vyrd:
Здравствуйте!

У меня такая проблема...борюсь уже 4-ый день..не могу понять как ее исправить.

Перешли мы с http на протол https. Домен у нас в поиске без www, соответственно 301 редирект должен вести на https://site.ru

На данный момент имею такой код редиректа:

RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


С http с www и без - работает, переадресация идет. НО с https www на без не работает!

Подскажите пожалуйста, как добавить переадресацию на протоколе https www на без. Спасибо!


RewriteCond %{HTTP_HOST} =www.site.ru [OR,NC]
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://site.ru/$1 [L,R=301]
Всего: 750