Htaccess - 将带有变量的旧站点重定向到新的子域

时间:2013-07-06 19:41:28

标签: html .htaccess mod-rewrite

所以,基本上,旧网站是完全用flash制作的,我想切换到html版本,将其分配给子域,并保持所有链接正常工作。 flash的示例网址如下所示:

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

从上面的网址,我需要得到一个漂亮的,如下:

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

当然,如果未指定语言变量,我想为URL分配一个默认的lang“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中的hash(#) - 我在index.php文件中创建了JS(这是我的第一个控制器),所以唯一剩下的就是语言......

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

1 个答案:

答案 0 :(得分: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