0

基本的に、古いサイトはすべてフラッシュで作成されているため、html バージョンに切り替えてサブドメインに割り当て、すべてのリンクを機能させたいと考えています。フラッシュの URL の例は次のようになります。

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

上記の URL から、次のようなきれいなものを取得する必要があります。

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

もちろん、言語変数が指定されていない場合は、URL にデフォルトの言語「EN」を割り当てたいので、言語コントローラーを切り替えることができます (フランス語/FR と英語/EN の 2 つの言語しかありません)。

現在の 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>
4

1 に答える 1

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
于 2013-07-07T09:59:34.497 に答える