Как условно перенаправить URL пользовательской схемы в Apache? - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть Apache, настроенный так:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/launchApp$
RewriteCond %{HTTP_USER_AGENT} Android
# Here I want to redirect to an URL with a custom scheme

RewriteRule не работает из пользовательских схем (в моем случае mobile://...)

Модуль PHP загружен в мой Apache, затем я подумал о решении, например, о перенаправлении на локальный URL, обслуживающий файл вроде:

<?php
  header("Location: mobile://...");
?>

Но мне не нравится идея достижения этого путем пересылки HTTP-запроса локальному, и это вызывает проблемы с остальной частью моей конфигурации.

Как условно перенаправить URL-адрес пользовательской схемы в Apache?

1 Ответ

0 голосов
/ 08 апреля 2019

Я нашел удовлетворительное решение, которое использует сценарий оболочки и позволяет не проксировать запрос, ссылаясь непосредственно на путь файловой системы:

Я создал файл /var/www/cgi-bin/redirectToMobile.sh:

#!/bin/sh -f

echo "Status: 302 Found"
echo "Location: mobile://..."
echo ""

А потом следующий Apache conf:

RewriteCond %{REQUEST_URI} ^/launchApp$
RewriteCond %{HTTP_USER_AGENT} Android
RewriteRule ^.*$ /var/www/cgi-bin/redirectToMobile.sh [L]

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

<Directory "/var/www/cgi-bin">
        AddHandler cgi-script .sh
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
</Directory>
...