Назад | Перейти на главную страницу

Как добавить правило перезаписи для перенаправления URL-адреса на веб-сервере Apache

Я пытаюсь настроить функцию автообнаружения Outlook и Thunderbird для своего почтового сервера.

Я добавил запись виртуального хоста со следующим RewriteRule перенаправить config-v1.1.xml к thunderbird.php и autodiscover.xml к outlook.php.

NameVirtualHost 192.168.0.153:80
<VirtualHost 192.168.0.153:80>
    ServerAdmin postmaster@test.int
    DocumentRoot /var/www/webroot
    ServerName autconfig.test.int
    RewriteEngine On
    RewriteRule ^/mail/config-v1\.1\.xml$ thunderbird.php [NC,L]
    RewriteRule ^/autodiscover/autodiscover\.xml outlook.php [NC,L]
</VirtualHost>`

Может ли кто-нибудь сказать мне, что это за ошибка, поскольку я получаю ошибку 404 not found? Я не делал никаких .htaccess файл.

Вы должны определить перенаправления в <Directory> предложение вроде этого:

<VirtualHost 192.168.0.153:80>
    ServerAdmin postmaster@test.int
    DocumentRoot /var/www/webroot
    ServerName autconfig.test.int

    <Directory "/var/www/webroot">
         Allow from All
         AllowOverride all
         RewriteEngine On
         RewriteRule ^/mail/config-v1\.1\.xml$ thunderbird.php [NC,L]
         RewriteRule ^/autodiscover/autodiscover\.xml outlook.php [NC,L]
    </Directory>
</VirtualHost>
RewriteRule ^/mail/config-v1\.1\.xml$ thunderbird.php [NC,L]
RewriteRule ^/autodiscover/autodiscover\.xml outlook.php [NC,L]

Вы не можете указать родственник строка подстановки контекст сервера (или vhost) при выдаче внутренняя перезапись. Он не рассматривается как относящийся к DocumentRoot (или ServerRoot). Примеры, приведенные в Документы Apache простое состояние это «недействительно, не поддерживается». На моем тестовом сервере это фактически приводит к 400 неверному запросу (а не к 404 Not Found) - хотя это, несомненно, будет зависеть от конфигурации сервера.

В контексте сервера вам необходимо указать либо абсолютный файловая система path или относительный URL-путь относительно корня документа (начинающийся с косой черты). Например:

RewriteRule ^/mail/config-v1\.1\.xml$ /thunderbird.php [NC,L]
RewriteRule ^/autodiscover/autodiscover\.xml /outlook.php [NC,L]