.htaccess в папке folder.
RewriteEngine On RewriteCond %{DOCUMENT_ROOT}/folder/$1.php -f RewriteRule ^(.+)/$ $1.php [L]
Ага, прям тут и накидаем.
string pattern = @"(value=....)"; Regex regex = new Regex(pattern); // Достигаем того же результата что и в предыдущем примере, // используя метод Regex.Matches() возвращающий MatchCollection foreach (Match match in regex.Matches(input)) { Console.WriteLine(match.Groups[1].Value); }
Сократить этот кусок до одной строки:
Console.WriteLine(Regex.Match(input, @"value=""(\d+)").Groups[1].Value);
Тут используется шаблон с GET параметрами и директива Redirect, которая относится к mod_dir.
Проблема в том, что mod_dir сравнивает с шаблоном только /path, а не весь /path?query.
Средствами mod_rewrite это можно сделать так
RewriteEngine On RewriteCond %{THE_REQUEST} " /index\.php\?option=com_content&view=article&id=6&Itemid=17 " RewriteRule ^ http://www.ivsatin.ru/tekhnologiya.html? [R=301,L]
или так
RewriteEngine On RewriteCond %{QUERY_STRING} =option=com_content&view=article&id=6&Itemid=17 RewriteRule ^index\.php$ http://www.ivsatin.ru/tekhnologiya.html? [R=301,L]
Ну и ставить это выше остальных RewriteCond и RewriteRule.
RewriteCond %{THE_REQUEST} " /question\.php\?page=(\d+)" RewriteRule ^question\.php$ /question-%1.html? [R=301,L] RewriteRule ^question-([0-9]+)\.html$ /question.php?page=$1 [L]
Или так
RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{QUERY_STRING} ^page=(\d+) RewriteRule ^question\.php$ /question-%1.html? [R=301,L] RewriteRule ^question-([0-9]+)\.html$ /question.php?page=$1 [L]
RewriteEngine On RewriteRule ^([^.]+)$ /$1.html [L,R=301]
rupixel, для исключения index.htm можно добавить в шаблон негативную опережающую проверку (?!index\.htm).
RedirectMatch 301 ^/(?!index\.htm).+\.htm$ $0l RewriteRule ^(?!index\.htm).+\.htm$ /$0l [R=301,L]
Или добавить дополнительный RewriteCond.
RewriteCond %{REQUEST_URI} !^/index.htm RewriteRule ^.+\.htm$ /$0l [R=301,L]
Redirect 301 "/старая ссылка/" httр://мой.сайт/новая-ссылка/
Или
RewriteEngine On RewriteRule "^старая ссылка/" httр://мой.сайт/новая-ссылка/ [R=301,L]
RedirectMatch 301 ^.+\.htm$ $0l
RewriteEngine On RewriteRule ^.+\.htm$ /$0l [R=301,L]
Если использовать флаг QSA, то пренаправление будет с ?a=b на ?metka=0&a=b
RewriteCond %{QUERY_STRING} !(^|&)metka= RewriteCond %{REQUEST_URI} !^/$ RewriteCond %{REQUEST_URI} !^/category/ RewriteRule ^.*$ /$0?metka=0 [R=301,L,QSA]
Если нужно с ?a=b на ?a=b&metka=0
RewriteCond %{QUERY_STRING} !(^|&)metka= RewriteCond %{REQUEST_URI} !^/$ RewriteCond %{REQUEST_URI} !^/category/ RewriteCond %{QUERY_STRING}&metka=0 &*(.+) RewriteRule ^.*$ /$0?%1 [R=301,L]
$text = '<div id="block" class="block">Текст "содержащий" кавычки.</div>'; $text = preg_replace('/<[a-z][^>]*>(*SKIP)(?!)| "/i', ' «', $text); $text = preg_replace('/<[a-z][^>]*>(*SKIP)(?!)|"[ .,;:]/i', '» ', $text);
На первый взгляд всё работает 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);