我正在尝试为我的邮件服务器配置 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 [email protected]
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 未找到错误,谁能告诉我这是什么错误?我没有创建任何.htaccess
文件。
答案1
您必须在<Directory>
如下子句中定义重定向:
<VirtualHost 192.168.0.153:80>
ServerAdmin [email protected]
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>
答案2
RewriteRule ^/mail/config-v1\.1\.xml$ thunderbird.php [NC,L] RewriteRule ^/autodiscover/autodiscover\.xml outlook.php [NC,L]
您不能指定相对的发出内部重写。它不被视为相对于 DocumentRoot(或 ServerRoot)。Apache 文档简单声明这是“无效,不支持”。在我的测试服务器上,这实际上会导致 400 错误请求(而不是 404 未找到) - 虽然这无疑取决于服务器配置。
在服务器上下文中,您需要指定绝对文件系统路径或文档根目录相对(以斜杠开头)的 URL 路径。例如:
RewriteRule ^/mail/config-v1\.1\.xml$ /thunderbird.php [NC,L]
RewriteRule ^/autodiscover/autodiscover\.xml /outlook.php [NC,L]