$text = preg_replace('/<a\s[^<>]*href="[^"]*\K\(/', '1', $text);
$text = preg_replace_callback(
'/<a\s[^<>]*href="\K[^"]+/',
function ($m) {
return str_replace('(', '1', $m[0]);
},
$text
);
RewriteEngine on
RewriteRule ^[^/]+\.php$ /links/$0 [L]
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/links/$0 -f
RewriteRule ^[^/]+\.php$ /links/$0 [L]
htaccess: ErrorDocument takes two arguments, Change responses for HTTP errors
ErrorDocument 403 " 'a' \"b\" "
ErrorDocument 403 ' \'a\' "b" '
ErrorDocument 404 /page404.php мне не подходит.
RewriteRule
как-то конфликтуют с этим правилом, то можно проверять с каким кодом было перенаправление и для 4xx 5xx делать исключение пуская в обход основных правил.RewriteCond %{ENV:REDIRECT_STATUS} ^[45]\d\d
RewriteRule ^ - [L]
/upload/file.jpg
попадает в location ~* ^/(upload|bitrix/images|bitrix/tmp)
. if
и добавление try_files
не даст нужного результата.location ~* ^/(upload|bitrix/images|bitrix/tmp) {
if ( $upstream_http_x_accel_redirect = '' ) {
expires 30d;
}
try_files $uri /bitrix/images/main/blank.gif;
}
if
или вместо try_files
использовать error_page
location ~* ^/(upload|bitrix/images|bitrix/tmp) {
if ( $upstream_http_x_accel_redirect = '' ) {
expires 30d;
}
error_page 404 =200 /bitrix/images/main/blank.gif;
}
design/img/file.jpg
совпадает с шаблоном ^([^/]+)/([^/]+)/([^/]+)/?$
RewriteCond %{REQUEST_FILENAME} !-f
относится только одному первому RewriteRule
.RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([^/]*)/?$ index.php?module=SectionView§ion_url=$1 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?module=CategoryView§ion_url=$1&category_url=$2 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?module=SubcategoryView§ion_url=$1&category_url=$2&subcategory_url=$3 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ index.php?module=SubcategoryView§ion_url=$1&category_url=$2&subcategory_url=$3&subsubcategory_url=$4 [L,QSA]
RewriteRule ^p/([^/]+)/?$ index.php?module=PageView&page_url=$1 [L,QSA]
RewriteRule ^id/([^/]+)/?$ index.php?module=RecordView&id=$1 [L,QSA]
RewriteRule ^/?$ index.php?module=MainView [L,QSA]
/dir/1
, а в try_files нужно передать только часть /dir/
.(/[a-z-]+/)
и в $1 получаем нужное значение.location ~ "^(/[a-z-]+/)(1\d|[1-9])$" {
index /category.php;
try_files $1/ =404;
}
RewriteRule ^(.*)_(.*)/$ /$1-$2/ [R=301,L]
RewriteCond -$1-$2 ^(-)(.*)_(.*)|^-(.*)
RewriteCond -%2%1%3%4 ^(-)(.*)_(.*)|^-(.*)
RewriteCond -%2%1%3%4 ^(-)(.*)_(.*)|^-(.*)
RewriteCond -%2%1%3%4 ^(-)(.*)_(.*)|^-(.*)
RewriteCond -%2%1%3%4 ^(-)(.*)_(.*)|^-(.*)
RewriteRule ^(.*)_(.*)/$ /%2%1%3%4/ [R=301,L]
RewriteRule ^(.*)ö(.*) https://site.ru/$1o$2 [R=301,L]
RewriteRule ^(.*)ü(.*) https://site.ru/$1u$2 [R=301,L]
RewriteRule ^(.*)õ(.*) https://site.ru/$1o$2 [R=301,L]
RewriteRule ^(.*)ä(.*) https://site.ru/$1a$2 [R=301,L]
location ~ [^/]\.php(/|$) {
...
fastcgi_param SCRIPT_FILENAME "/Users/yarovikov/.composer/vendor/laravel/valet/server.php";
...
}
location ~* ^/wp-content/uploads/.+?\.(rar|zip|7z)$ {
rewrite (.+) /wp-content/themes/test-theme/inc/nginx-file-request.php?path=$1 break;
root /Users/yarovikov/Sites/localhost/test-site;
fastcgi_pass "unix:/Users/yarovikov/.config/valet/valet.sock";
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
RedirectMatch 301 ^/(catalog1)/[^/]+/([^/]+\.html)$ /$1/$2
RewriteEngine on
RewriteRule ^(catalog1)/[^/]+/([^/]+\.html)$ /$1/$2 [R=301,L]
\W
нужно поставить пробел.(\w+ ){4}people
RewriteRule ^(.*)$
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?site\.com [NC]
RewriteRule ^old/page$ https://site.ru/new/page [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?site\.com [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
RewriteRule ^/
тут не нужен /
Первому RewriteRule передается путь от того места, где находится .htaccess, до запрошенного файла. Эта строка никогда не начинается со "/".
Если же mod_rewrite используется в<VirtualHost>
, он будет работать по-другому:
В<VirtualHost>
в RewriteRule попадает весь путь запроса, начиная от первого слеша, заканчивая началом параметров GET:-> "/news/category/post.html". Эта строка всегда начинается со /.http://example.com/some/news/category/post.html?comments_page=3
return 301 https://$host$request_uri;
proxy_pass
.server {
listen 443 ssl;
server_name ваш-домен.ру;
proxy_pass https://берём-содержимое.ру;
proxy_cookie_domain берём-содержимое.ру ваш-домен.ру;