下記の2つの動きを行いたいのですが考えたスクリプトだと無限ループしてしまいます。
それぞれのスクリプト単体だと正常に動作するのですが2つ記述すると無限ループとなります...
なにか良い記述の仕方はないでしょうか?
http://example.com/hoge
→URIの先頭に「ja」のフォルダを付けてリダイレクト「http://example.com/ja/hoge」
http://example.com/ja/hoge.html
→URLを変えずに「http://example.com/hoge.html」の情報を表示
-----------------------------------------------------------------
RewriteEngine On
#ルート以降が/ja,/us,/zh,/twの場合、URLを変えず上層フォルダからパスを取得
RewriteCond %{REQUEST_URI} ^/(ja|us|zh|tw)/
RewriteRule ^.*?/(.*?)$ $1 [L]
#ルート以降が/ja,/us,/zh,/tw以外のURLは全て/jaを先頭に付けてリダイレクト
RewriteCond %{REQUEST_URI} !^/(ja|us|zh|tw)/
RewriteRule ^.*$ http://%{HTTP_HOST}/ja%{REQUEST_URI} [L]
-----------------------------------------------------------------
上と下の順番を変えてみたらいかがでしょうか?
片方でjaをとって 片方で jaをつけてたら 無限ループしますね。
URLというのはブラウザ上のURLです。
情報自体は上層のファイルを参照しています。
参照元に直接アクセスされた場合はもう一つの処理のリダイレクトを行います。
現状の問題の理屈はわかるんです...
やりたいことをする為のコードが知りたいです。
環境変数を用いる事で自己解決しました。
--------------------------------------------------------------
RewriteEngine On
SetEnvIf REQUEST_URI ^/(ja|en|zh|tw).* lang=1
RewriteCond %{ENV:lang} 1
RewriteRule ^.*?/(.*?)$ $1 [L]
RewriteCond %{ENV:REDIRECT_lang} !1
RewriteRule ^.*$ http://%{HTTP_HOST}/ja%{REQUEST_URI} [L]
--------------------------------------------------------------
ここでのリンクの意味が分からないのですがリンクする事で解決するのであればご教授頂きたいです。
2015/03/11 15:44:49hoge.htmlでも正解だしhogeでも正解です。
REQUEST_URIの頭にjaを付けてるだけなので