質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

1回答

962閲覧

htaccessのRewriteRuleについて

hoh

総合スコア19

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

0クリップ

投稿2020/05/28 04:43

日本語版と英語版のサイトを作っており、英語版を表示するためのRewriteRuleについて質問させて下さい。

■ディレクトリ

hoge ┣htaccess ┗page  ┣index.php  ┣index_en.php  ┗page2   ┣index.php   ┣index_en.php   ┣page3.php   ┗page3_en.php

URLが https://hoge.com/* だったら日本語版を表示して、
URLが https://hoge.com/en/* だったら英語版(_en.phpのファイル)を表示させようとしています。

現状はhtaccessに

RewriteRule ^en/(.*) /$1/index_en.php

を記述しており、

上記URLにアクセスした場合はの場合はindex_en.phpを読み込み英語版を表示出来ていますが、
**https://hoge.com/en/page/page2/page3**にアクセスした時に**page3_en.php**を読み込ませようとして色々試しましたが上手くいきません。

hogeディレクトリ直下のhtaccessでURLが**https://hoge.com/en/***だった場合に該当ページの**_en.php**を表示する方法を教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ちょっと細かい条件が分かりませんが、
・ディレクトリならindex_en.php
・ディレクトリじゃなければ~_en.php
だとすると、

Apache

1ewriteEngine On 2RewriteCond %{DOCUMENT_ROOT}/$1/ -d 3RewriteRule ^en/(.*[^/])$ /en/$1/ [R=301] 4RewriteRule ^en/(.*)/$ /$1/index_en.php 5RewriteRule ^en/(.*[^/])$ /$1_en.php

https://hoge.com/en/pagehttps://hoge.com/en/page/にリダイレクトするのが筋だと思うのでそうしてあります。

投稿2020/05/28 09:46

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoh

2020/05/28 12:54

ありがとうございます! 思い通りの動きになりました! この方法でディレクトリかそうじゃないかを判断できるんですね。
otn

2020/05/28 12:58

そうですね。末尾の記号 $ を使えば良いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問