.htaccess重定向忽略端口

时间:2012-08-07 07:45:33

标签: .htaccess redirect ports

我在.htaccess中有以下内容将非www重定向到www:

RewriteCond %{HTTP_HOST} !^(.*)\.mysite\.com$ 
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]

这样运作正常,但访问www.mysite.com:8080重定向到www.mysite.com从.htaccess文件中删除上述行会导致访问端口8080工作。

所以我知道导致这个问题的是这两行。

我想仍然有这种影响,非www重定向到www,但我希望重定向来维护端口。

我已经使用%{SERVER_PORT}尝试了上述的各种版本,但没有运气,它们要么不起作用,要么导致重定向循环。

由于 杰克

修改

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php/$1 [L]

编辑2

我现在试过这个:

RewriteCond %{SERVER_PORT} ^8080$
RewriteCond %{HTTP_HOST} !^(.*)\.mysite\.com:8080$ 
RewriteRule ^(.*)$ http://www.mysite.com:8080/$1 [R=301,L]

尝试再次将端口8080上的请求重定向到端口8080时,会失败并重定向到没有端口的www.mysite.com。如果端口是8080,那么有用的就是什么都不做,因为这仅用于测试,所以我不需要非www / www重定向,例如。

RewriteCond %{SERVER_PORT} ^8080$
RewriteRule [Break here and do nothing more]

1 个答案:

答案 0 :(得分:0)

在这里回答我自己的问题。但基本上试图在.htaccess中引导端口是行不通的。

我正在使用Varnish并想要操纵请求,但因为Varnish在一个端口而Apache在另一个端口上,很难说是实际在这里进行。

总之我放弃了。