我在.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]
答案 0 :(得分:0)
在这里回答我自己的问题。但基本上试图在.htaccess中引导端口是行不通的。
我正在使用Varnish并想要操纵请求,但因为Varnish在一个端口而Apache在另一个端口上,很难说是实际在这里进行。
总之我放弃了。