在apache 2.2.22中,我有多个本地服务器设置,以便localhostN引用我可以通过local.myserver.com访问的服务器(对于不同的" myserver" s)。问题是一个这样的服务器在添加自动斜杠时做了一个奇怪的重定向(我通过mod_dir
猜测),访问:
http://local.myserver.com/noslashdir
发给我
http://localhost5/noslashdir/
而不是
http://local.myserver.com/noslashdir/
我无法在.htaccess文件中覆盖此行为。以下是相关细节:
/noslashdir/.htaccess:
DirectoryIndex index.html
/ htaccess的:
SetEnvIf HTTPS on http_proto=s
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^noslashdir/(.*)$ /noslashdir/$1.html [L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^noslashdir/(.+)\.html$ http%{http_proto}://%{HTTP_HOST}/noslashdir/$1 [L,R=302]
/etc/httpd/httpd.conf
<VirtualHost 127.0.0.5>
ServerName localhost5
DocumentRoot /var/www/myserver.com/
DirectoryIndex index.php index.html index.htm index.shtml
<Directory "/var/www/myserver.com">
Options Indexes +Includes FollowSymLinks
AllowOverride All
Allow from all
Order allow,deny
</Directory>
ScriptAlias /cgi-bin/ "/var/www/myserver.com/cgi-bin/"
</VirtualHost>
的/ etc /主机
127.0.0.5 local.myserver.com localhost5
我已尝试RewriteRule
s,DirectorySlash Off
等,但到目前为止还没有任何工作。所有其他所需的重定向都可以正常工作。
答案 0 :(得分:1)
在创建“自引用网址”时,Apache正在使用您为VirtualHost设置的ServerName
。
http://httpd.apache.org/docs/2.2/en/mod/core.html#servername:
“
ServerName
指令设置服务器用于标识自身的请求方案,主机名和端口。这在创建重定向URL时使用。“
您应该将UseCanonicalName设置为Off
:
“在许多情况下,Apache必须构建一个自引用URL - 即引用回同一服务器的URL。使用
UseCanonicalName On
Apache将使用ServerName
指令中指定的主机名和端口来构造服务器的规范名称。此名称用于所有自引用URL,[...]
使用UseCanonicalName Off
Apache将使用客户端提供的主机名和端口形成自引用URL(如果有的话)[...]“