お返事ありがとうございます。
.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」にリダイレクトされてしまうのは、何がいけないのでしょうか?
リダイレクト
2015年7月10日 at 10:39
お世話になっております。
現在稼働中のサイトにて、次の現象が起きております。
まず、プリティURLは使用しています。
1.URLに、トップページ「xxxxxxx.co.jp」と入力しEnterで、「xxxxxxx.co.jp/index.php」にリダイレクトされてしまいます。
2.URLに、下層ページ「xxxxxxx.co.jp/sample」と入力しEnterでは、index.phpにリダイレクトされることなく、「xxxxxxx.co.jp/sample」が表示されます。
インストールサーバー:さくらインターネット
Concrete5のバージョン:5.6.3.3
なぜ、「index.php」にリダイレクトされてしまうのでしょう?
ご教示よろしくお願いします。
タグ:
Re: リダイレクト
2015年7月10日 at 14:01
サーバーの設定でindex.phpが表示される設定になっているのかな?
と思うのですが、
検索で
index.php 非表示で調べてみましたら、
上△が入ってるサンプルを見ました。
公式にもサンプルがありました
http://concrete5-japan.org/help/faq/how_to_use_prettyurl/
上記の4番あたりが参考になると思います。
以下のこんなようになってます。
自分の現在稼働しているサイトでは
でやって見たが大丈夫だった。
と思うのですが、
検索で
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: リダイレクト
2015年7月10日 at 16:52
あとさくらインターネットでの状況が公式にありました。
http://concrete5-japan.org/help/5-6/install/hosting/sakura/#prettyurl
上記に何か書いてありますか?
http://concrete5-japan.org/help/5-6/install/hosting/sakura/#prettyurl
上記に何か書いてありますか?
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>
ドメインの部分は、実際のドメインに変えて下さいね。
<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 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>
自機で確認致しまた。(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: リダイレクト
2015年7月11日 at 14:32
pokinte 様
私も、さくらインターネットに引っ越ししたとき、
サーバーの設定が特殊であることに気づき、
だいぶ悩みました。以下の確認、設定でいかがでしょうか?
『さくらのレンタルサーバ スタンダード』プランの場合
1).htaccess を ローカルpcにバックアップするかして、
完全に一旦削除してください。
もし、リネームでバックアップされるなら、
_150711_ht_access
のようにしてください。
サーバーの特殊設定でファイルを読み込まれないようにするため(考え過ぎならいいのですが・・・)。
2)プリティーURLを一旦オフにしてください。
そして、concrete5 のキャッシュ設定を完全にオフしてから、concrete5のキャッシュをクリアしてください。
3)次に、確認するブラウザのキャッシュを完全に削除してください。
4)バッチジョブ(default設定のもの)5つを手動で、実行してください。
管理画面→システムと設定→自動実行ジョブ
5)この状態で、当然、xxxxxxx.co.jp/index.php で
トップページを含め全てのページが見られることを確認してください。
※文字化けとかが発生しないとは思いますが、発生する場合、
管理画面から、文字コード等を適宜設定してください。
設定は、ドキュメントルートのwww/php.ini に設定されます。
サーバーは、euc-jpがdefaultですので、テーマファイルが、UTF-8の場合。
また、以下がないときは編集で適宜追加してください。
output_buffering = On
6)問題なければ、プリティーURLをONにしてください。
自動で、.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 --
DirectoryIndex index.html index.htm index.shtml index.php index.cgi .ht
AuthUserFile /home/********/www/xxxxxxx.co.jp/.htpasswd
AuthType Basic
AuthName "Web access"
Satisfy all
Order deny,allow
上記は、通常default設定では見えませんが、わたしのところでは、設定いれています。
ブラウザで、表示をご確認ください。
7)これで解決しない場合、大変申し訳ございません。
現在、さくらインターネットにお問い合わせ中とのことですので、
その指示に従って設定してください。
※余談ですが、xxxxxxx.co.jpという、独自ドメインをご利用とのことですが、
ネームサーバーとひもづける、www/作成されているフォルダ名が
index とか、単純な設定になっていないかご確認ください。
さくらの特殊設定で、xxxxxxx.co.jp/sitemap/ とかのページがあったとき、
sitemap.xmlを作成される設定のとき、フォルダ名とファイル名(拡張子除く)が
同じだと、通常のサーバーでは問題がなくとも、sitemap.xmlにリダイレクト
されてしまいます。
さくらでは、実ファイルが優先して表示(リダイレクト)する仕様になっていますので、
ご注意ください。『さくらのレンタルサーバ スタンダード』の場合。他のプランや、契約時期によって、サーバーの設定が微妙に違う場合も考えられます。
私も、さくらインターネットに引っ越ししたとき、
サーバーの設定が特殊であることに気づき、
だいぶ悩みました。以下の確認、設定でいかがでしょうか?
『さくらのレンタルサーバ スタンダード』プランの場合
1).htaccess を ローカルpcにバックアップするかして、
完全に一旦削除してください。
もし、リネームでバックアップされるなら、
_150711_ht_access
のようにしてください。
サーバーの特殊設定でファイルを読み込まれないようにするため(考え過ぎならいいのですが・・・)。
2)プリティーURLを一旦オフにしてください。
そして、concrete5 のキャッシュ設定を完全にオフしてから、concrete5のキャッシュをクリアしてください。
3)次に、確認するブラウザのキャッシュを完全に削除してください。
4)バッチジョブ(default設定のもの)5つを手動で、実行してください。
管理画面→システムと設定→自動実行ジョブ
5)この状態で、当然、xxxxxxx.co.jp/index.php で
トップページを含め全てのページが見られることを確認してください。
※文字化けとかが発生しないとは思いますが、発生する場合、
管理画面から、文字コード等を適宜設定してください。
設定は、ドキュメントルートのwww/php.ini に設定されます。
サーバーは、euc-jpがdefaultですので、テーマファイルが、UTF-8の場合。
また、以下がないときは編集で適宜追加してください。
output_buffering = On
6)問題なければ、プリティーURLをONにしてください。
自動で、.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 --
DirectoryIndex index.html index.htm index.shtml index.php index.cgi .ht
AuthUserFile /home/********/www/xxxxxxx.co.jp/.htpasswd
AuthType Basic
AuthName "Web access"
Satisfy all
Order deny,allow
上記は、通常default設定では見えませんが、わたしのところでは、設定いれています。
ブラウザで、表示をご確認ください。
7)これで解決しない場合、大変申し訳ございません。
現在、さくらインターネットにお問い合わせ中とのことですので、
その指示に従って設定してください。
※余談ですが、xxxxxxx.co.jpという、独自ドメインをご利用とのことですが、
ネームサーバーとひもづける、www/作成されているフォルダ名が
index とか、単純な設定になっていないかご確認ください。
さくらの特殊設定で、xxxxxxx.co.jp/sitemap/ とかのページがあったとき、
sitemap.xmlを作成される設定のとき、フォルダ名とファイル名(拡張子除く)が
同じだと、通常のサーバーでは問題がなくとも、sitemap.xmlにリダイレクト
されてしまいます。
さくらでは、実ファイルが優先して表示(リダイレクト)する仕様になっていますので、
ご注意ください。『さくらのレンタルサーバ スタンダード』の場合。他のプランや、契約時期によって、サーバーの設定が微妙に違う場合も考えられます。
Your post has been saved and will be published after approval by the forum moderator.
多摩勉強会/遠藤
Re: リダイレクト
また、プリティURLを有効にした際に、.htaccessの設定情報が表示されたと思いますので、
そちらを開示して頂けると、正確な回答ができると思います。
そして、お困り事は具体的にはどういった事でしょうか?
以下、一般的な設定だとした場合の回答に成ります。
1)「xxxxxxx.co.jp」と入力しEnterで、「xxxxxxx.co.jp/index.php」にリダイレクト
こちらは、ドメインの後ろに/を付けないでアクセスした場合、
Webサーバ側から、Locationヘッダーというヘッダー情報がついた、レスポンスが返却されます。このヘッダー情報がついていると、ブラウザーはその通知されたURLにリダイレクト要求をします。(HTTPステータスは302が返っていると思います)
その通知のURLは、「xxxxxxx.co.jp/」と「/」が最後に付いたURLが返却されていると思います。
そして、ブラウザーはWebサーバの要求に応じて「xxxxxxx.co.jp/」にアクセスするのですが、
今度は、DirectoryIndexディレクティブの設定に従って、
「xxxxxxx.co.jp/index.php」等へのリダイレクトが発生していると思います。
2)下層ページ「xxxxxxx.co.jp/sample」と入力しEnterでは、index.phpにリダイレクトされることなく、「xxxxxxx.co.jp/sample」が表示
こちらは、Rewriteルールの設定次第で、そのURLがブラウザーが返却できるコンテンツがある場合は、リダイレクトせずにそのコンテンツを返す
という設定がされていれば、「1」とは挙動が異なる動きを設定できます。
(「1」はドキュメントルートへの要求リクエストですので、厳密にはmod_rewriteによるリダイレクトルールとは別の話しですが)