web-dev-qa-db-ja.com

共有ホストでComposerを使用してサイトをインストールした後、ベースURLからサブディレクトリを削除する方法は?

drupal 8 composerおよび次のスクリプトを使用して、

composer create-project drupal-composer/drupal-project:8.x-dev my_site_name_dir --stability dev --no-interaction

composerを使用することにしました。これは新しい方法のようで、すべての依存関係を取得するためです。

しかし、構造は異なり、インストールするdrupalをサーバーにダウンロードしてインストールします。それが私の問題です。

私は共有ホスティングを使用しており、以前はcomposerすべてがフォルダpublic_htmlに配置されています。しかしcomposerを使用すると、public = html内にweb =というフォルダがあり、drupal自体(または、少なくとも私にはそのように思われます)したがって、www.mydomain.comのようなURLを持つ代わりに、www.mydomain.com/webでサイトにアクセスします。

私の質問は、URLから/ webを非表示にする方法を教えてください。または、composer経由でインストールするときに何かしますか?

フロントページから/ webを非表示にする一時的なソリューションを実行しました。以下を含むpublic_htmlに新しい.htaccessを作成する必要がありました。

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

しかし、別のページをクリックするとすぐに/ webが再び表示されます。

ヒントやもちろん答えは大歓迎です。

ありがとう/トビアス

3
TobiasAldgard

私と私の同僚は、うまくいく解決策を見つけました。

Public_htmlフォルダーに、次の行を含む.htacessファイルを作成しました。

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

〜user/public_html/webにある.htaccessファイルを編集しました。

# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line: 
RewriteBase /web

〜/ user/public_html/web/sites/default/settings.phpファイルの下部にこのコードを追加しました。

if (isset($GLOBALS['request']) and
'/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME')) {
$GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php');
}

trusted_Host_patternsの設定も変更しました。

# will allow the site to run off of all variants of example.com and
# example.org, with all the sub-domains included. 

$settings['trusted_Host_patterns'] = array(
  '^DOMAIN.com$',
  '^.+.DOMAIN.com$',
  '^DOMAIN.com/web$',
  '^.+.DOMAIN.com/web$',
);

私が言ったように、これはおそらくそれを行う正しい方法ではありませんが、私たちにとってはうまくいきました。

3
TobiasAldgard

現在、同様のボートに乗っています。私たちは専用のホスティングを行っており、サイトの管理方法としてDrupal 8サイトと作曲家の開発を開始する予定です。

別のアプローチをとり、ディレクトリを作成し、その中にコア、モジュール、テーマファイルを追加しました。次に、それらのファイルとpublic_htmlフォルダーの間にシンボリックリンクを作成しました。それは正常に動作するようですが、あなたのように、私はベストプラクティスが何であるかわかりません。

参考:シンボリックリンクの作成方法は次のとおりです。

  1. mv public_html examplesite
  2. ln -s public_html examplesite/webfiles

それは私たちにとってうまくいくように見えました。

編集:私はこれを書いた直後に記事に出くわしました。 docrootからファイルを移動すると、サイトのセキュリティが強化されると書かれています。したがって、シンボリックリンクを使用して行った処理は、より優れたオプションと見なされる場合があります。

https://www.drupal.org/node/2767907

0
UnqtiousDude

あなたがmysite.com/publicにいて、index.phpまたはdrupal rootがmysite.com/publicの直下にある必要があります。

次に実行します:

create-project drupal-composer/drupal-project:8.x-dev my_site_name_dir --stability dev --no-interaction --no-install

my_site_name_dirに移動し、*.*を含むすべてをmysite.comの下に移動します

次に、composer.jsonの下のmysite.comを開き、installer-pathsの "web"を "public"に置き換えます。

composer install内でmysite.comを実行します。それが動作します。

0
user5858