Re: リダイレクト

2015年7月10日 at 13:33

お返事ありがとうございます。

.htaccessは下記の通りです。

# -- concrete5 urls start --
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]
</IfModule>
# -- concrete5 urls end --

で、困っているのは、オートナビで作られた各ページへのリンクには、ひとつも「index.php」がついていないにも関わらず、その中のホームのみクリックすると「index.php」にリダイレクトされてしまいます。
もちろん、手入力した場合でも同様です。
ドメイン名の最後に「/」はありません。
で、「index.php」は表示したくないだけなのです。

疑問点を具体的に書きますと、プリティURLを有効にしているので、「http://xxxxxxx.co.jp/sample」をクリックしても「http://xxxxxx.co.jp/index.php/sample」にはリダイレクトされず、「http://xxxxxxx.co.jp/sample」でアクセスできます。
なのに、ホームの「http://xxxxxxx.co.jp」にアクセスすると、「http://xxxxxxx.co.jp/index.php」にリダイレクトされてしまうのは、何がいけないのでしょうか?

Re: リダイレクト

2015年7月10日 at 14:01
サーバーの設定でindex.phpが表示される設定になっているのかな?
と思うのですが、
検索で
index.php 非表示で調べてみましたら、

RewriteRule ^ /index.php [L]


上△が入ってるサンプルを見ました。

公式にもサンプルがありました

http://concrete5-japan.org/help/faq/how_to_use_prettyurl/

上記の4番あたりが参考になると思います。
以下のこんなようになってます。
RewriteRule ^(.*)$ /index.php/$1 [L]


自分の現在稼働しているサイトでは

RewriteRule ^. index.php [L]


でやって見たが大丈夫だった。
 

Re: Re: リダイレクト

2015年7月10日 at 15:02
お返事ありがとうございます。
試してみましたが、うまくいきませんでした。

で、要求URLを見たら、存在するはずの「http://xxxxxxx.co.jp」となっていましたが、
ステータスコードが301となっていました。
なので、「http://xxxxxxx.co.jp/index.php」にリダイレクトされています。

そもそも、301が返ってくる事自体がおかしいと思ってます。
もう少し調べてみます。
 

Re: リダイレクト

2015年7月10日 at 15:18
htmlのタグがjavascriptで
もう一度http://~/index.phpを表示させてるとか、考えられるのですが?
たとえば、
index.htmかindex.htmlファイルがあって、index.phpに転送しているとかなどです。
 

Re: リダイレクト

2015年7月10日 at 16:28
あともう一つ

RewriteRule . /index.php [L]


最後の行を上記では?

ドッド 半角空白 スラッシュとならんでいます。
 

Re: リダイレクト

2015年7月10日 at 16:52
あとさくらインターネットでの状況が公式にありました。

http://concrete5-japan.org/help/5-6/install/hosting/sakura/#prettyurl

上記に何か書いてありますか?
 

Re: リダイレクト

2015年7月10日 at 16:54
ご教示ありがとうございます。

そもそも、最初の要求時にステータスコード301で返ってくるので、concrete5ではないのではと思っています。
現在、さくらインターネットに問い合わせしています。
回答が来るまで、しばらくお待ちください。
 

Re: Re: リダイレクト

2015年7月10日 at 17:03
読んだけどわからなかった。

わかった事は、直接htaccess.txtを作って、インストールディレクトリーにFTPして
名前を.htaccessにする事でした。
 

Re: リダイレクト

2015年7月10日 at 17:11
.htaccessを以下に変更すれば、ご期待の動作に成るかと思います。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule ^(.*)index.php$http://xxxxxxx.co.jp/$1 [R=301,L]
</IfModule>

ドメインの部分は、実際のドメインに変えて下さいね。
 

Re: リダイレクト

2015年7月10日 at 17:30
ご教示ありがとうございます。

残念ですが、index.phpは外れません。
最初のアクセスで、301が返ってきます。

また、ご教示通りにすると、http://xxxxxxx.co.jp/sample等の子ページが全て見れなくなります。
 

Re: リダイレクト

2015年7月10日 at 18:19
失礼致しました。
自機で確認致しまた。(Apache+concrete5.7.4.2)です。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://xxxxxxx.co.jp/$1 [L,R,NE]
</IfModule>
 

Re: Re: リダイレクト

2015年7月10日 at 18:36
度重なるご教示ありがとうございます。

子ページの読み込みエラーは解消されましたが、やはり最初のアクセスで301が返ってくるので、サーバー側の設定ではないかと思っています。
元々、作ってあったサイトのリニューアルで、かつサイト構築者はいなくなっているので、サーバー側の設定等がわからない状態なのです。

進展がありましたら、ご報告致します。
 

Re: リダイレクト

2015年7月11日 at 9:04
はやく良い方法がわかると良いですね。

もしかすると、index.html index.htmが優先になっていて、
このファイルがないときindex.phpに変わっているのかな?と思うのですが、
サーバーの設定をindex.php優先してみたら状況は
変わらないでしょうか?