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}但没有运气,它们要么不起作用,要么导致重定向循环。

谢谢杰克

编辑

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]
4

1 回答 1

0

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

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

总之我放弃了。

于 2012-08-10T22:07:03.723 回答