Подвох в порядке следования правил.
RewriteRule получает результат предыдущих преобразований.
Редирект не срабатывает, так как первым правилом адрес bednie_office_rabotniki/ меняется на index.php?page=bednie_office_rabotniki.
Сгруппируйте в самое начало правила для редиректов, а правила для красивых урлов в самый конец.
RewriteEngine On RewriteBase / RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /main\.php\ HTTP/ RewriteRule ^main\.php$ http://www.mysite.ru/ [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm?)\ HTTP/ RewriteRule ^ http://www.mysite.ru/ [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !\..+$ RewriteCond %{REQUEST_URI} !/$ RewriteRule (.*) http://www.mysite.ru/$1/ [R=301,L] RewriteCond %{HTTP_HOST} ^musite\.ru$ [NC] RewriteRule ^(.*)$ http://www.mysite.ru/$1 [R=301,L] RewriteRule ^bednie_office_rabotniki/ /bednie-office-rabotniki/? [R=301,L] RewriteRule ^([0-9a-z_\-]+)\/$ /index.php?page=$1
Потерялась закрывающая скобка после R=301.
Экранировать маркер конца строки не требуется.
Почему-то site/com, а не site.com
RewriteCond %{QUERY_STRING} view=product&id=1 RewriteRule ^category2$ http://www.site.com/category1?view=product&id=1 [L,R=301]
Ну если уж такой упор на скорость, то вот вариант вовсе без регулярок и библиотек для разбора DOM.
$str = file_get_contents('http://finance.yahoo.com/q/op?s=GDX'); $ids = array('Calls' => 'id="optionsCallsTable', 'Puts' => 'id="optionsPutsTable'); foreach ($ids as $k => $mark) { // Постепенно отсекаем лишнее, оставляя лишь содержимое <tbody> $table = strstr($str, $mark, false); $table = strstr($table, '</table>', true); $table = strstr($table, '</thead>', false); // Разбиваем по закрывающему тегу и не забываем удалить лишний кусок в конце. $cells = explode('</td>', $table, -1); // Удаляем html разметку и лишние пробелы по краям array_walk($cells, function(&$n) { $n = trim(strip_tags($n)); } ); // Восстанавливаем структуру в 10 столбцов $result[$k] = array_chunk($cells, 10); } print_r($result);
Тут используется анонимная функция и strstr с тремя параметрами, так что требуется как минимум php 5.3
.htaccess в папке downloads на сайте site1
Redirect 301 / http://site2.ru/
Могу предложить такой вариант разбора таблицы. Собираем содержимое всех ячеек. Полученный одномерный массив делим на части по количеству столбцов в таблице.
$str = file_get_contents('http://finance.yahoo.com/q/op?s=GDX'); preg_match('#<table[^>]+>\s*<caption>\s*Calls.+?</thead>(.+?)</table>#s', $str, $match); preg_match_all('#<td[^>]*>(.*?)</td>#s', $match[1], $matches); $cells = array_map('strip_tags', $matches[1]); $cells = array_map('trim', $cells); $result = array_chunk($cells, 10); print_r($result);
Пропущен пробел между RewriteRule и шаблоном.
Ну так скрипт ожидает получить GET параметры. Тут либо править скрипт или использовать такой .htaccess
RewriteCond %{THE_REQUEST} ^[A-Z]{3,7}\ (/users/admin)\?(talks)=(vasya)\ HTTP RewriteRule ^ /%1/%2/%3? [R=301,L] RewriteRule ^(users/admin)/(talks)/(vasya)$ /$1?$2=$3
Ставить в самом верху файла сразу после RewriteEngine On
Редирект users/admin?talks=vasya --> users/admin/talks/vasya
RewriteEngine On RewriteCond %{QUERY_STRING} =talks=vasya RewriteRule ^users/admin$ /$0/talks/vasya? [R=301,L]
Сам по себе код 500 малоинформативен. Больше информации будет в error_log, он обычно расположен рядом access_log apache.
Возможно текстовый редактор при сохранении в utf-8 добавляет в начало файла специальный маркер последовательность байт \xEF \xBB \xBF.
Варианты расширений файла php,htm,html описываются регулярным выражением (php|html?)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html?)\ HTTP/ RewriteRule ^ http://www.site.ru/ [R=301,L]