【问题标题】:Htaccess - redirect old site with variables to new subdomainHtaccess - 将带有变量的旧站点重定向到新的子域
【发布时间】:2013-07-07 17:59:34
【问题描述】:

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

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

从上面的网址,我需要得到一个漂亮的,像这样:

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

当然,如果没有指定语言变量,我想为 url 分配一个默认语言“EN”,这样我就可以切换语言控制器(只有两种语言 - 法语/FR 和英语/ CN)。

我当前的 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>

【问题讨论】:

  • 没有语言查询参数的url怎么看?
  • 看起来像这样:site.com/dir/#/gallery/folder1/image1.jpg
  • mod_rewrite 不能做子串。我的意思是 ?language=french 不能使用 .htaccess 变成 /FR/

标签: html .htaccess mod-rewrite


【解决方案1】:

这应该可以工作

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

【讨论】:

  • 是的。看起来它应该可以工作,但它没有:/ 这会将我重定向到子域,但仍会在 url 中显示 ?language=french。谢谢。
猜你喜欢
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-24
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
相关资源
最近更新 更多