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