web-dev-qa-db-ja.com

ApacheWebサーバーでURLをリダイレクトするための書き換えルールを追加する方法

メールサーバー用にOutlookとThunderbirdの自動検出機能を構成しようとしています。

config-v1.1.xmlThunderbird.phpにリダイレクトし、autodiscover.xmlOutlook.phpにリダイレクトするために、次のRewriteRuleを持つ仮想ホストエントリを追加しました。

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ファイルを作成していません。

3
gaurav9

次のように<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>
1
phoops
RewriteRule ^/mail/config-v1\.1\.xml$ Thunderbird.php [NC,L]
RewriteRule ^/autodiscover/autodiscover\.xml Outlook.php [NC,L]

内部書き換えを発行するときに、サーバー(または仮想ホスト)コンテキストで相対置換文字列を指定することはできません。 DocumentRoot(またはServerRoot)に関連しているとは見なされません。 Apache docs に示されている例では、これは「無効、サポートされていません」と単純に述べられています。私のテストサーバーでは、これは実際には400 Bad Request(404 Not Foundではない)になりますが、それは間違いなくサーバーの構成に依存します。

サーバーコンテキストでは、絶対ファイルシステムパスまたはドキュメントルート相対(スラッシュで始まる)URLパスのいずれかを指定する必要があります。例えば:

RewriteRule ^/mail/config-v1\.1\.xml$ /Thunderbird.php [NC,L]
RewriteRule ^/autodiscover/autodiscover\.xml /Outlook.php [NC,L]
0
MrWhite