我很抱歉这些帖子中的另一篇,但据我所知,我的问题不同于流行的http - > https重定向到那里。
我想
redirect all http://www.mydomain.com traffic to https://www.mydomain.com/wiki
和
redirect https://www.mydomain.com to https://www.mydomain.com/wiki
请注意我的第一个重定向目标中的https。
对于第一次重定向,我可以通过放置:
来实现这一目标RewriteEngine On
RewriteCond %{REQUEST_URI} /
RewriteRule ^(.*) https://%{SERVER_NAME}/wiki [R,L]
在我的httpd.conf文件中重新启动。
我认为这对我的https://尝试也有效。请注意,我不包括
RewriteCond %{HTTPS} !=on
或类似的东西。然而,仍然https://www.mydomain.com将我发送到我的服务器根目录中的index.html文件。
如果我尝试将上述Rewrite指令放在我的httpd-ssl.conf文件中并重新启动服务器,那么我将获得无限重定向。
我做错了什么?
注意:对于它的价值,/ wiki是/ home / Users / myusername / www / wiki(wiki的绝对路径)的别名
更新
重新讨论到目前为止我尝试过的事情:
尝试1:
在httpd.conf中:
RewriteEngine On
RewriteCond %{REQUEST_URI} /
RewriteRule ^(.*) https://%{SERVER_NAME}/wiki [R,L]
在httpd-ssl.conf中:
Nothing Rewrite related
结果1:
将所有http流量重定向到https://www.mydomain.com/wiki 对https://www.mydomain.com
没有任何作用尝试2:
在httpd.conf中:
RewriteEngine On
RewriteCond %{REQUEST_URI} /
RewriteRule ^(.*) https://%{SERVER_NAME}/wiki [R,L]
在httpd-ssl.conf中:
RewriteEngine On
RewriteCond %{REQUEST_URI} /
RewriteRule ^(.*) https://%{SERVER_NAME}/wiki [R,L]
结果2:
无限重定向。
尝试3:
在httpd.conf中:
RewriteEngine On
RewriteCond %{REQUEST_URI} /
RewriteRule !^wiki https://%{SERVER_NAME}/wiki [R,L]
在httpd-ssl.conf中:
RewriteEngine On
RewriteCond %{REQUEST_URI} /
RewriteRule !^wiki https://%{SERVER_NAME}/wiki [R,L]
结果3:
无限重定向。
答案 0 :(得分:1)
您的规则将匹配每个请求(甚至/wiki
)。尽量排除:
RewriteRule !^wiki https://%{HTTP_HOST}/wiki [R,L]
答案 1 :(得分:1)
无限重定向来自于规则与第一个客户端请求(例如http://..。)和任何后续请求匹配的事实。
您最好使用重写规则,该规则排除匹配中的wiki路径,例如
RewriteRule !^wiki https://%{HTTP_HOST}/wiki [R,L]
或者你可以通过RewriteCond获得更好的性能
RewriteCond %{REQUEST_URI} !^wiki
在现有规则之前。这样可以更轻松地添加您在示例中当前具有的更复杂的模式(如果您需要稍后在项目中使用)。
答案 2 :(得分:0)
我找到了一个可能不是最强大的解决方案,但它对我有用。
在我的httpd-ssl.conf文件中,在VirtualHost容器下,我将DocumentRoot设置为指向我一直尝试重定向到的目录。
<VirtualHost _default_:443>
DocumentRoot "path on my HD where I wanted to redirect all along"
ServerName All the usual stuff...
...
这会处理https交易的“重定向”(不再重定向)
对于http(非ssl)我放在httpd.conf中:
RewriteEngine On
RewriteCond %{REQUEST_URI} /
RewriteRule ^(.*) https://%{SERVER_NAME}/wiki [R,L]
这似乎是这样做的。