首页 文章

.htaccess重定向忽略端口

提问于
浏览
2

我在.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} 的上述各种版本,但没有运气,它们要么不起作用,要么导致重定向循环 .

谢谢杰克

EDIT

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

EDIT 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

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

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

    总之,我放弃了 .

相关问题