我正在尝试编写.htaccess文件,将example.com或www.example.com的请求重定向到:https://example.com/game1 但我无法让它发挥作用。
我的.htaccess中有这个:
<div id="animate-area"></div>
PAGE_PATH变量不起作用,如果我使用setup2 apache更改URL但重定向失败,我也无法调用正确的URL。我收到错误:example.com重定向了你太多次(ERR_TOO_MANY_REDIRECTS)。
.htaccess的Setup2:
# ReDirect to current instance of game
RewriteEngine On
# RewriteCond %{HTTPS} != On
SetEnvIf PAGE_PATH "game1"
RewriteRule ^/?(.*) https://%{SERVER_NAME}/%{ENV:PAGE_PATH}/$1 [R,L]
如何配置我想要的行为?
答案 0 :(得分:-1)
您可以使用以下规则:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\. [OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^ https://%1/game1%{REQUEST_URI} [NE,L,R]
这将重定向:
example.com
或
www.example.com
到
https://example.com/game1/
答案 1 :(得分:-1)
试试这个:
RewriteRule ^(?>/?)(?!game[1-9]\d*(?:$|/))(.*) https://%{SERVER_NAME}/%{ENV:PAGE_PATH}/$1 [R,L]
如果网址不以/gameN/
开头,N
为任意整数,则只会重定向。它首先将斜杠放在一个只有一次的子模式中,所以,如果匹配,它就不能通过回溯和打破下一部分来“无法匹配”。下一部分是负面的前瞻性断言。
将域和https检查分开并将它们放在游戏路径重定向之前,因为它们应该是永久重定向,而游戏应该是临时的。您最好在该检查中对域进行硬编码,因为SERVER_NAME
受UseCanonicalName影响,默认情况下处于关闭状态。将localhost
替换为您的开发服务器域。
RewriteCond %{HTTP_HOST} !^(?:localhost|example\.com)$
RewriteRule .* https://example.com/$0 [L,R=301]
RewriteCond %{HTTPS} ^off$
RewriteRule .* https//%{SERVER_NAME}/$0 [L,R=301]