2015-03-18 2 views
1

У меня есть .htaccess файл, который перенаправляет пользователя на https: // и добавляет/de/index, если ничего не указано..htaccess перенаправление поведения

RewriteEngine on 
RewriteRule ^(hotelaccess)($|/) - [L] 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule (.*) https://%{HTTP_HOST}/de/index [L] 
RewriteCond %{HTTP_HOST} !^www\.mypage\.de 
RewriteRule (.*) http://www.mypage.de/de/index [R=301,L] 
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?lang=$1&page=$2 [L,QSA] 

но теперь, если я вхожу https://www.mypage.de его получить перенаправлены-х https://www.mypage.de/index? Почему это и что мне нужно добавить, чтобы исправить это? Разъяснение: по умолчанию URL Всегда должен быть https://www.mypage.de/de/index при входе и без WWW и как HTTP: // и https: // (также с или без WWW)

+0

ну почти: 'де/бар -> де/index'' ан/индекс -> ан/index' '/ hotelaccess -> игнорировать все правила, за исключением http (s): // & (www) 'Итак, в основном: Not de или en -> de // not index -> index ///hotelaccess ->/hotelaccess – PrimuS

ответ

1

Вы должны положить редирект, а затем ваши переделок. Кроме того, можно объединить два переадресовывает в одно правило:

RewriteEngine on 
RewriteBase/

RewriteCond %{SERVER_PORT} !^443$ [OR] 
RewriteCond %{HTTP_HOST} ^mypage\.de$ [NC] 
RewriteRule ^(.*)$ https://www.mypage.de/$1 [R,L] 

# for no URI 
RewriteRule ^$ /de/index [L] 

# for hotelaccess 
RewriteRule ^hotelaccess - [L] 

# for everything else 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?lang=$1&page=$2 [L,QSA] 
+0

почти идеально, только'/de/foo' или '/ en/foo /' не будут перенаправлены? – PrimuS

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