jkm

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

Подвох в порядке следования правил.


RewriteRule ^([0-9a-z_\-]+)\/$ /index.php?page=$1
RewriteRule ^bednie_office_rabotniki/ /bednie-office-rabotniki/? [R=301,L]

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
langueborg:

RewriteCond %{QUERY_STRING} view=product&id=1
RewriteRule ^category2\$ http://www.site/com/category1/view=product&id=1 [L,R=301

Потерялась закрывающая скобка после 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]
Всего: 749