2013-07-06 4 views
0

Итак, в основном, старый сайт целиком сделан во флэш-памяти, и я хочу переключиться на html-версию, назначить ее субдомену и сохранить все ссылки. Пример URL для вспышки выглядит следующим образом:Htaccess - перенаправить старый сайт с переменными на новый поддомен

http://site.com/dir/?language=french#/gallery/folder1/image1.jpg

Из вышеприведенного URL, мне нужно, чтобы получить довольно, как здесь:

http://dir.site.com/FR/gallery/folder1/image1.jpg

Конечно, если языковая переменная не указана, я хотел бы назначить по умолчанию lang «EN» для URL-адреса, поэтому я могу сделать переключатель языкового контроллера (будут только два языка - французский/FR и английский/EN).

Мой текущий файл Htaccess (http://site.com/dir/.htaccess) выглядит следующим образом:

RewriteCond %{REQUEST_URI} ^/dir 
RewriteRule ^(.*)$ http://dir.site.com/$1 [R=301,L,P] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

Теперь мне нужно только преобразовать переменную языка, как в приведенном выше примере, но когда я пытаюсь установить еще одно правило в HTAccess, мой сайт получает ошибку переадресации:/

Что касается хеша (#) в URL-адресе - я сделал JS в файле index.php (который является моим первым контроллером), поэтому остается только язык ...

<script type="text/javascript"> 
    if (location.href.indexOf("#") > -1) { 
     location.assign(location.href.replace(/\/?#/, "")); 
    } 
</script> 
+0

Как делает URL выглядеть без параметра языка запросов? –

+0

выглядит так: _site.com/dir/#/gallery/folder1/image1.jpg_ –

+0

mod_rewrite не может делать подстроку. Я имею в виду, что '? Language = french' не может быть выполнен'/FR/'с использованием .htaccess. – anubhava

ответ

0

Это должно работать

RewriteEngine on 
RewriteBase/

RewriteCond %{QUERY_STRING} language=french [NC] 
RewriteRule ^dir/.*$ http://dir.site.com/FR? [R=301,NC,L] 

RewriteRule ^dir/.*$ http://dir.site.com/EN? [R=301,NC,L] 

перенаправлений следующим

http://site.com/dir/#/gallery/folder1/image1.jpg [OR] 
http://site.com/dir/?language=english#/gallery/folder1/image1.jpg 
=> http://dir.site.com/EN#/gallery/folder1/image1.jpg 

http://site.com/dir/?language=french#/gallery/folder1/image1.jpg 
=> http://dir.site.com/FR#/gallery/folder1/image1.jpg 
+0

Да. похоже, что он должен работать, но это не так:/Это перенаправляет меня на субдомен, но по-прежнему показывает «? язык = французский» в URL-адресе. Благодарю. –

+0

Несомненно, вы использовали 'http: //dir.site.com/FR?'? Это '?' В конце важно. –

+0

Да, конечно, я использовал '?' В конце. –

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