Как работать с перезаписью модов с помощью пользовательской схемы 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}.

Другие вопросы по тегам