/path?query/path, а GET параметры следует искать в $args.if ($request_uri ~ "/\?[a-z]{9}") {
return 403;
} (?-s)^.*$(?<!html)\R?^(?-s:(.*html$)|.*\R?)$1$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_pagelocation ~* ^/(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]RedirectMatch 301 ^/(catalog1)/[^/]+/([^/]+\.html)$ /$1/$2RewriteEngine on
RewriteRule ^(catalog1)/[^/]+/([^/]+\.html)$ /$1/$2 [R=301,L] \W нужно поставить пробел.(\w+ ){4}peopleRewriteRule ^(.*)$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