2016-10-22 5 views
0

Я пытаюсь написать файл .htaccess, который перенаправляет запросы example.com или www.example.com на: https://example.com/game1 Но я не могу заставить его работать.Перенаправление в подпапку с htaccess

У меня есть это в моей .htaccess:

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

переменная PAGE_PATH не работает, и если я использую Setup2 апач изменяет URL, но редирект терпит неудачу, и я не могу назвать правильный URL либо. Я получаю ошибку: example.com перенаправил вас слишком много раз (ERR_TOO_MANY_REDIRECTS).

Setup2 для .htaccess:

# ReDirect to current instance of game 
RewriteEngine On 
# RewriteCond %{HTTPS} != On 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/game1/ [R,L] 

Как я могу сконфигурировать желаемое поведение?

ответ

-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/ 
+0

Когда я попытать рекомендуемую конфигурацию я получаю ту же ошибку: ERR_TOO_MANY_REDIRECTS и мой URL переодеться в: «https://example.com/game1/game1/game1/game1/game1/game1/game1/game1/game1/game1/game1/game1/game1/game1/game1/game1/game1/game1/game1/game1/game1/" –

+0

Вы очистили кеш браузера? – starkeen

+0

Бесполезно. Это вызовет бесконечные перенаправления. – Walf

-1

Попробуйте это:

RewriteRule ^(?>/?)(?!game[1-9]\d*(?:$|/))(.*) https://%{SERVER_NAME}/%{ENV:PAGE_PATH}/$1 [R,L] 

Он будет перенаправлять только если URL не начать с /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] 
+1

Когда я пытаюсь это сделать, я получаю: «.htaccess: RewriteCond: неизвестный флаг« L », и если я поместил его в subdir в localhost, этот каталог даже не попадает в список« index Of ». Мне также интересно, как заставить переменную PAGE_PATH работать, теперь я просто заменил ее на «game1». –

+0

Я ошибся 'RewriteRule'. – Walf

+0

Вы имели в виду использовать 'SetEnv'? – Walf

Смежные вопросы