jkm

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

RewriteCond %{REQUEST_URI} ^/cats(.*)$ [NC]
RewriteRule ^cats(.*)$ /catalog$1 [L,R=301]

RewriteRule ^cats(.*)$ https://site.ru/catalog$1 [L,R=301]

Headlesz, в правилах для замены CATS и удаления .html нужно указать полный адрес c https://domain и поставить их над правилом для редиректа на https.

dwell:
Подскажите, пожалуйста, как сделать редирект через htaccess всех адресов из определенной директории с пробелами на адреаса с дефисами?
Т.е. чтобы все адреса
http://site.com/search/primer stranici/ и, соответственно,
http://site.com/search/primer%20stranici/
Редиректились на
http://site.com/search/primer-stranici/

При этом чтобы в остальных директориях пробелы в адресах не редиректились!

RewriteRule "^(search/.*?) (.*)" /$1-$2 [R=301,L]
proweb.com.ua:
Всем привет!
Помогите сформировать правильно htaccess
Есть некий список айпи адресов доступ которым к сайту закрыт.
Мне нужно разрешить всем доступ к одной странице сайта.
Как это реализовать средствами .htaccess?
Сейчас вот:
Order Allow,Deny

Allow from all
#
Deny from x.x.x.0/x
Deny from x.x.x.0/x
--//--

Можно добавить SetEnvIf и поменять порядок в Order.

SetEnvIf Request_URI ^/page1$  allow_page=1


Order Deny,Allow

Allow from env=allow_page
Allow from env=redirect_status

Deny from x.x.x.0/x
Deny from x.x.x.0/x
baas:
Хмм.
Так пробовали?
Order deny,allow

deny from all
Allow from 227.123.80.0/24

Там же ещё код ответа нужно сменить с 403 на 404.

Файл /admin/.htaccess


ErrorDocument 403 /404.php

Order deny,allow
Deny from all
Allow from 227.123.80.0/24

Файл /404.php


<?php
http_response_code(404);

Вариант с mod_rewrite

/admin/.htaccess


ErrorDocument 403 /404.php

DirectorySlash off

RewriteEngine on

RewriteCond %{REMOTE_ADDR} <227.123.80.5 [OR]
RewriteCond %{REMOTE_ADDR} >227.123.80.227
RewriteRule ^ - [F]
Gagarin12:
Вроде работает, она корректная? Косяков нет?

Все нормально. Можно даже не R=permanent, а redirect=permanent - это всё синонимы R=301.

RewriteEngine On

RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^/?(.*) https://%1/$1 [L,redirect=permanent]

^/? обеспечивает одинаковую работу в контексте VirtualHost и .htaccess.

В контексте VirtualHost строка с которой работает RewriteRule всегда начинается с "/", а в .htaccess всё наоборот.

Dram:
var='/etc/init.d/nginx reload';

Там нужно не кавычки, а обратные апострофы

var=`/etc/init.d/nginx reload`; 

Просто удалить \r

tr -d '\r' < blockip.sh > blockip_fix.sh
Dram:
но мне выдает
blockip.sh: line 3: $'\r': command not found

В Window конец строки это последовательность из двух символов \r\n, а в Unix конец строки только один символ \n.

SELECT CONCAT('deny  ', INET_NTOA(ip_start), ';') FROM `xyfq1_blacklist_items` WHERE `c` > 50 ORDER BY `c` DESC 

Ну и bash скрипт примерно такой:

#!/bin/bash

user=user
pass=xxxxx
mydb=dbname

query="SELECT CONCAT('deny ', INET_NTOA(ip_start), ';') FROM \`xyfq1_blacklist_items\` WHERE \`c\` > 50 ORDER BY \`c\` DESC "

mysql --skip-column-names --user="$user" --password="$pass" --database="$mydb" --execute="$query" > blockip.conf
Всего: 749