Обслуживание c подстраниц в drupal 8 через htaccess - PullRequest
0 голосов
/ 09 июля 2020

У нас есть сайт на drupal 8 с папкой в ​​do croot. Допустим, это в папке под названием micrositefolder. Он содержит единственный index. html файл.

Теперь предположим, что micrositefolder живет на fullsite.com. Я не хочу, чтобы кто-то имел доступ к микросайту через fullsite.com/micrositefolder, но вместо этого доступен только через mymicrosite.com

. Я уже добился этого с помощью следующего:

# Prevent access to the static site from non-static site hosts.
RewriteCond %{REQUEST_URI} ^/micrositefolder [NC]
RewriteCond %{HTTP_HOST} !^mymiscrosite
RewriteRule .* /index.php [L,R=301]

# Only serve the static site if host begins with mymiscrosite.
RewriteCond %{HTTP_HOST} ^mymiscrosite

# Don't loop anything targeting the actual mask directory, to allow
# for linked scripts, stylesheets etc in the static HTML
RewriteCond %{REQUEST_URI} !^/micrositefolder/

#Any requests that made it this far are served from the /micrositefolder/ directory
RewriteRule ^(.*)$ /micrositefolder/$1 [PT]

Это отлично работает. Теперь я могу посетить mymicrosite.com, и он обслуживает меня по этому индексу. html в этой папке.

Теперь мне нужно добавить еще одну страницу на этот микросайт. URL-адрес будет mymicrosite.com/ronnie. Я создал папку внутри micrositefolder под названием ronnie с другим index.html в ней.

Когда я пытаюсь указать go на этот URL-адрес (mymicrosite.com/ronnie), он переписано на mymicrosite.com/micrositefolder/ronnie/, и я не могу понять почему. Я почти уверен, что это связано с последней строкой в ​​моем фрагменте кода, но я не могу понять, как сделать это просто mymicrosite.com/ronnie

Следует отметить, что если я просматриваю URL-адрес через mymicrosite.com/ronnie/ он работает, но если я не добавляю sla sh в конце, он перенаправляется на mymicrosite.com/micrositefolder/ronnie

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Вы можете добавить это правило под существующими правилами на сайте root .htacess:

# add a trailing slash to directories
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule [^/]$ %{REQUEST_URI}/ [L]

Это добавит завершающий sla sh, если текущий запрос указывает на каталог.

Проблема с предложенным вами подходом (в ответе) заключается в том, что:

  • Он выполнит завершающее перенаправление sla sh 301, даже если это недопустимый URI, например mymicrosite.com/qwerty111
  • Для таких случаев, как mymicrosite.com/ronnie, где /micrositefolder/ronnie - фактический каталог, он выполнит дополнительное перенаправление 301 перед отображением index.html
0 голосов
/ 09 июля 2020

Добавление .htaccess внутри micrositefolder с помощью приведенного ниже, похоже, решило мою проблему

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*[^/])$ /$1/ [L,R=301]
</IfModule>
...