0

重複の可能性:
htaccess ファイルを使用したリダイレクト

こんにちは(とても素朴な質問です)。

マッピング方法

mydomain/language/somepage

mydomain/somepage.php

物理ページはもちろん mydomain/somepage.php です

アイデアは、/en/somepage、/fr/somepage、/de/somepage がすべて somepage.php を指しているということです (php を使用して URL で渡される言語を取得するつもりです)。

より具体的には、apache がリクエスト URI から /fr /en /de のいずれかを SUPPRESS し、適切なドキュメントを配信することを理解し、物理ツリーに /fr /en /de サブディレクトリがないことを望みます。

root/fr/subdir/subsubdir/somepage

を指す必要があります

root/subdir/subsubdir/somepage.php

ありがとうございました !

* 編集 *

それで、URL の書き換えがどのように機能するかがよくわかったと思うので、これにたどり着きました。それは壊れていて、私は実際に正規表現が苦手なので、誰かがそれを整理するのを手伝ってくれるなら、私はそれが大好きです! ^^

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond ^[a-z]{2}$/%{REQUEST_FILENAME}\.php -f
RewriteRule ^([a-z]{2})/(.*)$ $2.php?lang=$1

説明: URL は次の形式で apache に渡されます。

root/(fr|de|en|whatever)/document

そして、(する必要があります)の形式で書き直されます/phpに渡されます

root/document.php?lang=(fr|de|en|whatever)

十分に明確であることを願っています、TYVM !

また、サブディレクトリも同様に渡すことができます

root/(fr|de|en|whatever)/sub/.../document

とてもいいでしょう。%{REQUEST_FILENAME}、%{REQUEST_URI} などの定数の htaccess についてさらに説明が必要です。

タイ

4

1 に答える 1

1

ユーザーを apache で特定の URL にリダイレクトしようとしている場合は、次のチュートリアルが適切なガイドラインになります。

アパッチ mod_rewrite

ただし、あなたのウェブサイトでは、言語オプションをクエリ文字列として使用する方が良いと思います。このようにすると、言語ベースのサイトをより適切に処理できると思います。たとえば、30 か国にローカライズされた Web サイトがある場合、30 か国すべてに対して mod_rewrite を実行する必要があり、サイトを更新する必要がある場合は、それらすべてを修正する必要があります。ただし、クエリ文字列を使用する場合。somepage.phpクエリ文字列の値を取得し、それに基づいて必要なページをレンダリングできます。

実装しやすいと思います。(または、間違ったやり方で、欠点に気づいていないのかもしれません)

于 2012-09-07T17:55:34.220 に答える