2013-07-06 176 views
0

因此,基本上,舊網站是整體在Flash中,我想切換到HTML版本,將其分配給子域,並保持所有鏈接工作。對於閃存的一個例子網址如下:Htaccess - 將舊網站與變量重定向到新的子域

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

從上面的網址,我需要得到相當一個,比如這個:

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

當然,如果未指定語言變量,我想爲URL指定一個默認語言「EN」,以便我可以使語言控制器切換(將只有兩種語言 - 法語/ 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中的散列(#) - 我在index.php文件(這是我的第一個控制器)中創建JS,所以唯一剩下的就是語言...

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

如何進行網址的外觀,而語言的查詢參數? –

+0

它看起來像這樣:_site.com/dir/#/gallery/folder1/image1.jpg_ –

+0

mod_rewrite不能做子字符串。我的意思是''language = french'不能使用.htaccess製作'/ FR /'。 – 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中顯示'?language = french'。謝謝。 –

+0

當然,你用'http://dir.site.com/FR?'?那'''最後是很重要的。 –

+0

是的,當然我最後使用了'?'。 –

相關問題