虚拟主机中文件的 Apache 别名

虚拟主机中文件的 Apache 别名

我正在尝试设置 z-push,它需要一个/Microsoft-Server-Activesync指向index.phpVHost 位置之外的另一个目录中的文件的别名。为了测试,我在同一路径中设置了一个文件并创建了以下内容

Alias /info /var/www/z-push/info.php
<Directory "/usr/share/z-push/">
    Options -Indexes
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

这不起作用,但如果我将别名更改为此

Alias /info.php /var/www/z-push/info.php

我可以通过 URL 访问它example.com/info.php。但我需要能够example.com/info让 ActiveSync 正常工作。

我认为我可以使用 RewriteRule 来修复此问题,但是没有成功。

谢谢。

编辑 :

这是我的虚拟主机配置:

SetEnv RAILS_ENV production

RewriteEngine On

# Rewrite index to check for static
RewriteRule ^/$ /index.html [QSA]

# Rewrite to check for Rails cached page
RewriteRule ^([^.]+)$ $1.html [QSA]

DocumentRoot /var/www/redmine/public/

<Directory /var/www/redmine/public/>
    Options +FollowSymLinks +MultiViews
    AllowOverride all
    Order allow,deny
    Allow from all
</Directory>

Alias /Microsoft-Server-ActiveSync /var/www/z-push
<Directory "/usr/share/z-push">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    Allow from all
</Directory>

php_flag magic_quotes_gpc off
php_flag register_globals off
php_flag magic_quotes_runtime off

答案1

我认为罪魁祸首是rewrite您在配置文件中所制定的这条规则:

RewriteRule ^([^.]+)$ $1.html [QSA]

启用此规则后,当您请求时example.com/info,扩展.html会被添加,并且您的请求将成为example.com/info.html

当然,这样的文件是不存在的。摘自我的日志:

[error] [client xx.xx.xx.xx] File does not exist: /var/www/info.html

由于看起来该重写规则是必需的Rails,因此我不建议您将其注释掉。

您可以修改此规则,添加重写条件,以便它能够应用仅有的如果请求的页面是不是 /info

RewriteCond %{REQUEST_URI} !^/info
RewriteRule ^([^.]+)$ $1.html [QSA]

相关内容