RewriteCond %{HTTP_HOST} =www.site.com [NC] RewriteRule ^(de|es|xx|yy)/.*$ https://site.net/$0 [R=301,L]
$page_source = preg_replace_callback('~<title>(.*?)</title>|(?=</head>)~si', 'renderTitle', $page_source, 1);
RewriteRule ^(?:(.*)/|)feed$ /$1 [L,R=301]
suffix, там вместо относительного адреса /$1$2 нужен полный адрес https://www.site.ru/$1$2
Там кроме замены флага L|last на N|next нужно ещё разделить работу на два правила.
Одно правило только заменяет и в случае успеха обьявляет переменную окружения.
Второе правило проверяет эту переменную и делает редирект.
RewriteRule ^([^_]*)_(.*) $1-$2 [N,E=FINISH:1] RewriteCond %{ENV:FINISH} =1 RewriteRule ^(.*) /$1 [R=301,L]
За один раз правилами mod_rewrite можно заменить только какое-то фиксированное количество знаков.
RewriteCond $1-$2 ^(?|([^_]*)_(.*)|(.*)-(.*)) RewriteCond %1-%2 ^(?|([^_]*)_(.*)|(.*)-(.*)) RewriteCond %1-%2 ^(?|([^_]*)_(.*)|(.*)-(.*)) RewriteCond %1-%2 ^(?|([^_]*)_(.*)|(.*)-(.*)) RewriteRule ^([^_]*)_(.*) /%1-%2 [R=301,L]
Удобнее делать замену средствами PHP.
RewriteRule _ redirect.php [L]
redirect.php
<?php header('Location:' . str_replace('_', '-', $_SERVER['REQUEST_URI']), true, 301);
Ну так до этого без них все номально работало.
Тогда нужно поменять шаблон ^1c\.php$ на (^|\.cgi/)1c\.php$
RewriteRule (^|\.cgi/)1c\.php$ - [L]
RedirectMatch 301 ^/p(3660664)(?!\d) /index.php?route=product/product&path=530869&product_id=$1
Если адресов много, то лучше направить их все на отдельный php скрипт который по id сформирует нужную ссылку и сделает редирект.
RewriteRule ^p(\d+) redirect.php?product_id=$1 [L]
Для исключения файла 1c.php добавьте сразу после RewriteEngine On строку:
RewriteRule ^1c\.php$ - [L]
В итоге должно получиться так:
<FilesMatch "\.md5$"> Deny from all </FilesMatch> DirectoryIndex index.php Options -Indexes # Comment the following line, if option Multiviews not allowed here Options -MultiViews <ifModule mod_rewrite.c> RewriteEngine On RewriteRule ^1c\.php$ - [L] RewriteCond %{HTTP_HOST} ^www\.stolicasveta\.ru$ [NC] RewriteRule ^(.*)$ https://stolicasveta.ru/$1 [R=301,L] RewriteCond %{HTTP:X-HTTPS} !1 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] # Uncomment the following line, if you are having trouble #RewriteBase / RewriteCond %{REQUEST_URI} !\.(js|css|jpg|jpeg|gif|png)$ [or] RewriteCond %{REQUEST_URI} apple-touch-icon\.png$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,QSA] </ifModule> <ifModule mod_headers.c> <FilesMatch "\.(jpg|jpeg|png|gif|js|css)$"> Header set Cache-Control "max-age=3153600, public" </FilesMatch> </ifModule> php_value log_errors 1 php_value error_log php-error.log php_value max_execution_time 300 php_value memory_limit 32M Action php5.4-script /cgi-bin/php5.4.cgi AddType php5.4-script .php AddDefaultCharset utf-8 AddType 'text/html; charset=utf-8' .html .htm .shtml
Если я правильно понял задачу, то должно быть как-то так:
location ~ ^/less/ipx/25623/((.*).doc)$ { rewrite ^ /load/25623/url.hml?file=/less/ipx/25623/$1? break; # а тут уже ваш proxy_pass }