URLをインストール先からドキュメントルートに変更したい

2017年9月26日 at 13:59

過去スレも見たのですが、うまくできなかったのでスレを立てさせていただきます。

・お使いのサーバー
 Xサーバー
・お使いのPC
 Macbook、Windows7
・お使いの concrete5 のバージョン (下記の環境情報があればなお可)
 8.2.1
・お困りの内容を、できるだけ詳しく
過去スレにも多くありましたが、
URLをサブディレクトリからドキュメントルートに変更したい。

インストール先
http://example.com/concrete/
理想のアクセス先
http://example.com/

/config/site.php内にはdefine〜という記述がないなど、バージョンの違い(?)で過去スレを読んでも対処ができませんでした。
インストールした中身をドキュメントルートに持ってくるのは避けたいです。
よろしくお願いします。

タグ:

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月26日 at 14:01
環境情報を追記します。
よろしくお願いします。

# concrete5 Version
Core Version - 8.2.1
Version Installed - 8.2.1
Database Version - 20170802000000

# concrete5 Packages
None

# concrete5 Overrides
None

# concrete5 Cache Settings
Block Cache - On
Overrides Cache - On
Full Page Caching - Off
Full Page Cache Lifetime - Every 6 hours (default setting).

# Server Software
Apache

# Server API
cgi-fcgi

# PHP Version
7.0.18

# PHP Extensions
apcu, bcmath, bz2, calendar, cgi-fcgi, Core, ctype, curl, date, dba, dom, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, imagick, imap, intl, json, ldap, libxml, mbstring, mcrypt, mysqli, openssl, pcre, PDO, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, Reflection, session, shmop, SimpleXML, soap, sockets, SPL, sqlite3, standard, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib

# PHP Settings
max_execution_time - 30
log_errors_max_len - 1024
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - 60
max_input_vars - 1000
memory_limit - 200M
post_max_size - 30M
sql.safe_mode - Off
upload_max_filesize - 30M
ldap.max_links - Unlimited
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
pgsql.max_links - Unlimited
pgsql.max_persistent - Unlimited
session.cache_limiter - <i>no value</i>
session.gc_maxlifetime - 7200
soap.wsdl_cache_limit - 5
opcache.max_accelerated_files - 2000
opcache.max_file_size - 0
opcache.max_wasted_percentage - 5
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月27日 at 14:51
concrete5のファイル群を、まるっと一階層上に移動させれば良いように思います。
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月27日 at 15:26
Fumito Mizuno様の方法で解決するのは承知の上での質問となります。

過去の質問を拝見しましたが、
http://concrete5-japan.org/community/forums/usage/post-1903

上記質問内容では
>site.phpを見るとこうなっています。
>-------------------------------------------
>define('BASE_URL', 'http://www.example.com');
>define('DIR_REL', '/test');
>-------------------------------------------

私の環境ではdefine~の行がsite.phpには存在しておりません。

そして、Katz Ueno様が返信している
>一応、ここのスレッドの更新。


>ちょっとうる覚えですが 5.5.2.1 ぐらいから、BASE_URL や DEL_REL の記述が site.php から必須でなくなりました。

>既に公式サイトのヘルプページでは、ここの記述をなくしています。

>古くからサイトを運用し、site.php に BASE_URL や DIR_REL が入っている人は、
>現時点、削除してもらって構いません。

>引越の際は、site.php で BASE_URL や DIR_REL が記述してある行を削除して、引っ越しを行ってください。

上記の記述を見ると、site.phpにはdefine~を追記する必要があるのか、
そもそもsite.phpにdefine~を記載することでは解決できなくなっているのではないかと推測します。

・現在、私が使用しているconcrete5 8.2.1ではsite.phpのどこを変更をすれば実現できるのか。
・site.phpでは解決出来ないのであれば、他の手段で解決できる方法はあるか

上記について再度ご質問させていただきます。
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月28日 at 18:13
https://concrete5-japan.org/community/forums/usage/post-2602/?

現在このスレッドでのやり方でトップページまでは表示できるのですが、他のページにリンクができない状態です。

なにをいじれば良いのだろう…
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月28日 at 18:33
Thorさま

下記 URL の投稿は参考になりませんか?

http://www.concrete5.org/community/forums/installation/hide-the-sub-directory-url-in-5.7/#838552
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月28日 at 18:34
Thorさん。

site.phpのcanonical_urlは、どうなっていますでしょうか?

すみません。canonical_url は関係なさそうです。
 

Re: Re: URLをインストール先からドキュメントルートに変更したい

2017年9月28日 at 20:21
Thorさん。


http://concrete5-japan.org/community/forums/usage/post-2602/

家のプアなcentosサーバーで確認したら、concrete5フォルダーのindex.phpに以下の追記したらうまく動きました。
index.phpに追加しましたでしょうか?
C5フォルダーがconcrete5のインストールフォルダーです。


$_SERVER['REDIRECT_URL'] = str_replace('c5/', '', $_SERVER['REDIRECT_URL']);
$_SERVER['ORIG_PATH_INFO'] = str_replace('c5/', '', $_SERVER['ORIG_PATH_INFO']);
$_SERVER['PATH_INFO'] = str_replace('c5/', '', $_SERVER['PATH_INFO']);
$_SERVER['SCRIPT_NAME'] = str_replace('c5/', '', $_SERVER['SCRIPT_NAME']);
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月28日 at 20:45
nipperさん
ご返信ありがとうございます。
英語記事がんばって読み解いてみます!w

にゃんきちさん
ご返信ありがとうございます。


現在の状況をまとめました。

ディレクトリの配置は以下になります。
public_html ┬ conc ┬ .htaccess ②
      │    └ index.php ③
      └ .htaccess ①

ドキュメントルート直下の.htaccess①に


DirectoryIndex index.html index.php
RewriteEngine On
RewriteBase /

RewriteRule ^$ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^conc/ [NC]
RewriteRule ^(.*)$ /conc/$1


上記を記載。

concディレクトリ内の.htaccess②には

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /conc/index.php/$1 [L]


こちらを記載しています。

そしてindex.php③には

<?php
$_SERVER['REDIRECT_URL'] = str_replace('conc/', '', $_SERVER['REDIRECT_URL']);
$_SERVER['ORIG_PATH_INFO'] = str_replace('conc/', '', $_SERVER['ORIG_PATH_INFO']);
$_SERVER['PATH_INFO'] = str_replace('conc/', '', $_SERVER['PATH_INFO']);
$_SERVER['SCRIPT_NAME'] = str_replace('conc/', '', $_SERVER['SCRIPT_NAME']);
require('concrete/dispatcher.php');


こちらを記載しており、現在はトップページは表示されるようになりましたが、
トップページからのリンク先が No input file specified. と表示されております。

気持ち的にはあと一歩かな?とは思っているのですが、あと一歩がどうしてもわからない状況です。

nipperさんが紹介してくれたページも参考にあがいてみます。
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月28日 at 21:07
Thorさん。

.htaccess②ですが、私が試した時は、プリティーURLの指定をして、以下のRewriteRuleにしています。

RewriteRule . index.php [L]
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月28日 at 21:43
にゃんきちさん

情報ありがとうございます!

一旦環境をリセットしました。
①プリティURLを設定し、.htaccessを作成
②ドキュメントルート直下にも先程と同じ.htaccessを再作成
③index.phpの編集作業

追記しました

ここまでの実施で

http://ドメイン  にてトップページは開けた
http://ドメイン/conc を開くとリダイレクトループ (ちょっと直したい)
各リンク先のURLにはconc/index.php入り (手動で変更する必要がある?)
すべてのリンク先に飛べない状況。
といった感じで変化がみられませんでした。

なにかやり方を間違えているのでしょうか…


追記

URL直打ちでページに飛ぶことはできました
が、内部で動くリンク系はだめっぽいですね

追記
サイト内のリンクがすべて
http://ドメイン
で移動できるようになりました。

画面上から管理画面や画面下部のログインボタンなどをクリックすると、リンク先がindex.phpが含まれているURLになっている
その為、リンク先にてエラーが発生する。何か操作をするたびurlからindex.phpを削除しながらの操作になる
サイトマップ、設定画面など、管理画面内のリンクからindex.phpを消す方法を模索中
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月29日 at 8:06
Thorさん。

システムと設定->SEOと統計->URLとリダイレクト
で、プリティーURLがONになっていますでしょうか?

私のサイトでも、プリティURLを指定しても管理画面ではindex.phpは消えません。

追記:ローカルサーバだとindex.phpは消えるが、レンタルサーバMixHostだと管理画面ではindex.phpが消えていない、何かの設定か???
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月29日 at 12:52
にゃんきちさん

プリティーURLはONにしてあり、.htaccessも編集済です。
管理画面のindex.phpが消えないため、どれを押してもエラーになる状態です。

直下にインストールすればすべてが解決するのかしら……


追記
ページ下のloginボタンを押す→ID,Passを入力しログイン→No input file specified.
No input file specified.が表示されている時のURLにはindex.phpが含まれている。

うーん…


念のため手順の確認
再インストール
・データベース空にする
・元のconcディレクトリ削除
・ドキュメントルート直下の.htaccess削除(他では使っていない)
・concrete5~~~.zip解凍
・concに名前変更
・ブラウザにてドメイン/concにアクセスし、インストール作業実施
 (日本語→続行→項目埋めてインストール)

ここまでではドメイン/conc/で表示。index.phpは表示されている
どこのページも問題なく表示される。

.htaccessとindexphpの編集
・ルートに.htaccessを作成し、以下を記載
DirectoryIndex index.html index.php
RewriteEngine On
RewriteBase /

RewriteRule ^$ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^conc/ [NC]
RewriteRule ^(.*)$ /conc/$1


conc/index.phpを以下に書き換える。
<?php
$_SERVER['REDIRECT_URL'] = str_replace('conc/', '', $_SERVER['REDIRECT_URL']);
$_SERVER['ORIG_PATH_INFO'] = str_replace('conc/', '', $_SERVER['ORIG_PATH_INFO']);
$_SERVER['PATH_INFO'] = str_replace('conc/', '', $_SERVER['PATH_INFO']);
$_SERVER['SCRIPT_NAME'] = str_replace('conc/', '', $_SERVER['SCRIPT_NAME']);
require('concrete/dispatcher.php');


conc/.htaccessを作成し以下を記載
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /conc/index.php/$1 [L]


上記終了時の状況
ブラウザを使用してドメイン/concにて接続→リダイレクトループ
ドメインに接続→トップページ表示。アドレスバーはドメイン名のみ表示。ページ内のリンクには/concが含まれるものと含まれないものが混在している。
ダッシュボードへの接続できず。

以下アドレス直打ちにてダッシュボードへの接続
ドメイン/dashboard/welcome (No input file specified.)
ドメイン/conc/dashboard/welcome (No input file specified.)
ドメイン/conc/index.php/dashboard/welcome (404エラー)
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月29日 at 18:10
インストール後、いじった箇所です。

ドキュメントルートのhtaccess


DirectoryIndex index.html index.php
RewriteEngine On
RewriteBase /

RewriteRule ^$ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^conc/ [NC]
RewriteRule ^(.*)$ /conc/$1


.htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} /conc/
RewriteRule ^conc/(.*)$ $1 [R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]


index.php

<?php

$_SERVER['REDIRECT_URL'] = str_replace('conc/', '', $_SERVER['REDIRECT_URL']);
$_SERVER['ORIG_PATH_INFO'] = str_replace('conc/', '', $_SERVER['ORIG_PATH_INFO']);
$_SERVER['PATH_INFO'] = str_replace('conc/', '', $_SERVER['PATH_INFO']);
$_SERVER['SCRIPT_NAME'] = str_replace('conc/', '', $_SERVER['SCRIPT_NAME']);

require('concrete/dispatcher.php');


残りはコンフィグとか??
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月29日 at 19:01
Thorさん。

家のcentosでは上記で動いてます。

キャッシュはクリアしましたでしょうか?
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月29日 at 21:49
にゃんきちさん

度々ありがとうございます。
キャッシュの削除は実施しました

試しに別の端末からアクセスしてみましたが、トップ画面しか表示されませんでした。
うーむ…なぜできないのか…
にゃんきちさんができているということは私の方でなにか不備があるのだと思いますが見当がつきません。。
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月30日 at 12:45
Thorさん

契約しているレンタルサーバで確認してみたときの情報です。

* レンタルサーバー MixHost
* サブドメインで確認
* concrete5 8.2.1
*http://サブドメイン/conc でアクセスするとリダイレクトループ

/.htaccess


php_value date.timezone 'Asia/Tokyo'

<IfModule mod_rewrite.c>
DirectoryIndex index.html index.php
RewriteEngine On
RewriteBase /conc
RewriteRule ^$ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^conc/ [NC]
RewriteRule ^(.*)$ /conc/$1
</IfModule>


※ php_value date.timezone は、レンタルサーバMixHostでphp.iniが使えないので指定しています。



/conc/index.php


<?php

$_SERVER['REDIRECT_URL'] = str_replace('conc/', '', $_SERVER['REDIRECT_URL']);
$_SERVER['SCRIPT_NAME'] = str_replace('conc/', '', $_SERVER['SCRIPT_NAME']);

require('concrete/dispatcher.php');


※ 記述を減らしているのは、エラーになっていたからです。
[30-Sep-2017 11:47:19 Asia/Tokyo] PHP Notice: Undefined index: ORIG_PATH_INFO in xxxxxxxx
[30-Sep-2017 11:47:19 Asia/Tokyo] PHP Notice: Undefined index: PATH_INFO in xxxxxxxx


/conc/.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 [L]
</IfModule>
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月30日 at 15:57
にゃんきちさん

度々ありがとうございます。
インストール時にデフォルトのテーマを使用し、.htaccess、conc/.htaccess、conc/index.phpではにゃんきちさんのコードを使用させていただいております。


・トップページのナビゲーションバー(?※添付しました。)からのリンク先がhttp://ドメイン/conc/index.php/〜〜となっていて404エラーになる。
別のページに移動すると、ナビゲーションバーのリンク先はhttp://ドメイン/〜〜に変わり、正常に閲覧ができる。

・ページ最下部のログインボタンを押すと、ログインフォームが表示されるが、ID,パスを入力しログインしようとするとhttp://ドメイン/index.php/dashbord/welcomeを開こうとして「No input file specified.」が表示される。
※これはURLからindex.phpを削除するとページ遷移できるのでログインは可能。

・welcome画面にて、画面右側の管理画面のすべてのリンクがhttp://ドメイン/index.php/dashbord/〜〜になっているため管理画面の操作ができない。
※プリティーURLがうまく動作していない?これらもindex.phpを手動で消すとつながるが、、、

concrete5はドキュメントルート直下に設置することを前提に作られているということなので、解決は難しいでしょうか。上記の解決手段がない。もしくは私の環境でのみ発生するようであれば、サブディレクトリでの運用か、Xserverでの運用のどちらかを諦めようと思います。
※さくらサーバではドメイン毎にドキュメントルートを設定できるので、設定なしで実現できそうです。
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年9月30日 at 21:23
Thorさん。

concrete5側のキャッシュがクリアされていないのではないでしょうか?
index.phpの追加で、concは消えるはずです。
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年10月2日 at 12:21
にゃんきちさん

度々ありがとうございます。
サーバ側のキャッシュの削除でしたか。
エックスサーバは手動でキャッシュ削除が出来ないようなのでキャッシュクリアされるまで待ってみます!
 

Re: Re: URLをインストール先からドキュメントルートに変更したい

2017年10月2日 at 14:11
Thorさん。

レンタルサーバ自身のキャッシュも影響があるかもしれませんが、
先に、concrete5のキャッシュクリアをして確認してください。

システムと設定 -> 最適化 -> キャッシュをクリア
 

Re: URLをインストール先からドキュメントルートに変更したい

2017年10月3日 at 22:53
にゃんきちさん
きました!キャッシュの削除したらできました!!
concrete5もキャッシュ作ってあるんですね。。
解決いたしました!
色々お世話になりました。ありがとうございます!