Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
894
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
правило mod_rewrite для перенаправления всех запросов, кроме одного конкретного пути
Я пытаюсь перенаправить все запросы к моему домену на другой домен, используя mod_rewrite в объявлении Apache 2.2 VirtualHost. Есть одно исключение - я бы хотел, чтобы все запросы к /audio -му пути не перенаправлялись.
Я написал RewriteCond и RewriteRule, чтобы сделать это, но это не совсем правильно, и я не могу понять, почему. Регулярное выражение содержит отрицательный lookhead для строки "/audio", но по какой-то причине это не соответствует. Вот такое определение:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net(?!/audio) [NC]
RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301]
Если я изменю RewriteCond на:
RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net/(?!audio) [NC]
(т. е. поставьте косую черту вперед вне отрицательной части lookahead), то это работает, но недостатком этого является то, что запросы к mydomain.net без косой черты trailing не будут перенаправлены.
Может ли кто-нибудь указать мне, что я делаю не так?
(Примечание: угловые скобки вокруг домена в бите RewriteRule выше добавляются StackOverflow.com - их нет в фактическом коде!)
Вот такие правила:
<VirtualHost *:80>
ServerAdmin me@mydomain.net
DocumentRoot "/var/www/mydomain.net/htdocs"
ServerName www.mydomain.net
ServerAlias mydomain.net
RewriteEngine on
RewriteCond {REQUEST_URI} !^/audio
RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301]
RewriteLog logs/mod_rewrite_log
RewriteLogLevel 3
ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>
Спасибо @mercutio - это вполне логично, но все равно кажется, что это не работает.
Вот что говорит журнал mod_rewrite, когда я делаю запрос на http://mydomain.net/audio/something.mp3 :
(2) init rewrite engine with requested uri /audio/something.mp3
(3) applying pattern '^(.*)$' to uri '/audio'
(2) rewrite '/audio' -> 'http://www.newdomain.net/'
(2) explicitly forcing redirect with http://www.newdomain.net
(1) escaping http://www.newdomain.net for redirect
(1) redirect to http://www.newdomain.net [REDIRECT/301]
Поскольку REQUEST_URI действительно начинается с /audio , я ожидаю, что RewriteRule будет проигнорирован.
HTTP_HOST содержит только имя хоста, а не путь к запрошенному URL.
RewriteCond %{REQUEST_URI} !^/audio
Должно быть все, что вам нужно.
Кроме того, вы можете получить отладочную информацию от механизма перезаписи с помощью следующего, что действительно полезно для просмотра соответствия вашим условиям и правилам:
RewriteLog /path/to/log/file
RewriteLogLevel 3