Как работать с перезаписью модов с помощью пользовательской схемы URL?
Итак, вот моя проблема: я пытаюсь сделать перенаправление на веб-страницу с файлом htaccess. Это перенаправление будет направлено на пользовательский URL (т.е. не на что-то вроде "http://...", а на что-то вроде "myurl://...)".
Сейчас я пытаюсь сделать это на небольшом локальном сервере Apache, на котором у меня есть страница index.html, каталог "test", а в этом каталоге - файл.htaccess и файл test.html.
Вот что находится внутри файла.htaccess:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ myurl://test$1 [R=302]
Я думаю, что проблема, вероятно, отсюда, потому что я совершенно новичок в этом, и я впервые пытаюсь записать в файл.htaccess. Итак, если это не правильный способ сделать это, то каков правильный способ сделать это тогда?
Спасибо всем, кто может помочь
2 ответа
Проблема связана с RewriteRule
Сам, который проверяет схему URL. Из исходного кода mod_rewrite.c он читает только подмножество схем:
Протоколы, распознаваемые Mod_Rewrite
- ajp: // - протокол Apache JServ
- балансировщик:// - Apache Load Balancer
- FCGI: //
- ftp: // - протокол передачи файлов
- суслик: // - Суслик (протокол)
- http: // - протокол передачи гипертекста
- https: // - протокол передачи гипертекста
- ldap: // - облегченный протокол доступа к каталогам
- mailto: - схема mailto URI
- новости: - протокол новостей
- nntp: // - протокол передачи сетевых новостей
- SCGI: //
- WS: //
- О: //
На самом деле вы можете использовать RedirectMatch
это не проверяет протокол следующим образом:
RedirectMatch /(.*) myurl://$1
Возможно, я что-то упускаю, но префикс URL - это протокол. У клиента, просматривающего URL-адрес, есть приложение, привязанное к этому протоколу. HTTP(S) = браузер, MAGNET = торрент-клиент, MAILTO = почтовый клиент и т. Д.
Так что, если ваш клиент настроен на фактическое использование такого типа URL, вы свяжетесь с вашим сервером либо по http, либо по протоколу https... так что я полагаю, вы не можете проверить протокол...?
Если Apache принимает ваш запрос, я думаю, вы можете проверить весь URL, используя%{SCRIPT_URI}.