.htaccess i multisite

Events happening in the community are now at Drupal community events on www.drupal.org.
LBiStockholm's picture

Jag vill att min apache-server ska göra en re-write på en av sajterna i en multisite-installation. Berörd sajt/mapp är drupal/sites/example.mydomain.com.

Önskat resultat är http://example.mydomain.com ändras till http://otherdomain.com/example

För root i en 'ren' html-installation är koden

Options +FollowSymlinks
RewriteEngine on
rewriterule ^(.*)$ http://otherdomain.com/example$1 [r=301,nc]

Var placerar jag koden? En .htaccess med koden ovan i .../example.mydomain.com fungerar inte.

Jag försökte med att lägga till koden nedan till .htaccess i drupals root, men det fungerar inte heller.

Options +FollowSymlinks
RewriteEngine on
rewriterule ^example.mydomain.com(.*)$ http://otherdomain.com/example$1 [r=301,nc]

Hur gör man?

Comments

Drupals .htaccess

göran's picture

Se raderna 102-106, enl nedan

 
# 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 /drupal

// Göran

Fungerar inte på önskat sätt

LBiStockholm's picture

Jag gör väl något fel, men det fungerar inte på önskat sätt.

Jag ändrar raden till
RewriteBase http://otherdomain.com/example

Webbläsaren ligger då kvar på http://example.mydomain.com och rapporterar 500 Internal Server Error

Egentligen tror jag att just denna omskrivning inte ska kunna fungera i mitt fall, eftersom den inte särskiljer för multisite. På något sätt måste väl omskrivningen villkoras?

Du ska nog ändra bara skriva submappens namn

göran's picture

rad 106
RewriteBase /example
- dvs bara submappens namn,
Drupal funkar inte bra om man inte anger submappens namn (där core befinner sig) och sätter på rewrite-kommandot på rad 106.

Ovan förutsätter att en drupalkärna befinner sig i mappen "example"

Detta har nog inget att göra med "adressen" i webfönstret, dvs testa detta i kombination med dina tidigare åtgärder om du har en drupalkärna i example- mappen.

// Göran

Tänkte på en sak till

göran's picture

Good practice innebär att man bör sätta på "Base URL " i drupals setting.php, som adresserar till en given url-adress.
Om man omadresserar i .htaccess till annan url adress, så borde en konflikt uppstå om Base URL är påsatt och adresserad.

Se raderna 262-281 i /sites/default/setting.php

* Base URL (optional).
*
* If Drupal is generating incorrect URLs on your site, which could
* be in HTML headers (links to CSS and JS files) or visible links on pages
* (such as in menus), uncomment the Base URL statement below (remove the
* leading hash sign) and fill in the absolute URL to your Drupal installation.
*
* You might also want to force users to use a given domain.
* See the .htaccess file for more information.
*
* Examples:
*   $base_url = 'http://www.example.com';
*   $base_url = 'http://www.example.com:8888';
*   $base_url = 'http://www.example.com/drupal';
*   $base_url = 'https://www.example.com:8888/drupal';
*
* It is not allowed to have a trailing slash; Drupal will add it
* for you.
*/
# $base_url = 'http://www.example.com';  // NO trailing slash!

// Göran

Jag har nog tänkt fel

LBiStockholm's picture

Jag har nog tänkt helt fel i detta. Ordet är nog 'proxy'.

Jag omformulerar:

1) Jag har en publik webbplats www.example.com
2) jag har en resurs som ska vara dold www.dold-resurs.com
3 Resursen ska hanteras genom www.example.com/resurs på så sätt att www.example.com/resurs/foo hämtar sitt innehåll från www.dold-resurs.com/foo

Proxy?

Det finns en sak till i setting.php

göran's picture

Det finns en sak till i setting.php som kan vara av intresse i din ursprungliga idé

Jag förstår inte riktigt hur du menar i din senaste version

setting.php raderna 269-281

* You might also want to force users to use a given domain.
* See the .htaccess file for more information.
*
* Examples:
*   $base_url = 'http://www.example.com';
*   $base_url = 'http://www.example.com:8888';
*   $base_url = 'http://www.example.com/drupal';
*   $base_url = 'https://www.example.com:8888/drupal';
*
* It is not allowed to have a trailing slash; Drupal will add it
* for you.
*/
# $base_url = 'http://www.example.com';  // NO trailing slash!

Du kan alltså flytta besökaren till någon default-adress enligt ovan

// Göran

iFrame

LBiStockholm's picture

jag förstår inte riktigt hur du menar i din senaste version

Det ska fungera på liknande sätt som en iFrame.

Gällande iframe

göran's picture

En iframe hämtar innehåll ifrån en url (html-adress), dvs den visar innehållet ifrån en annan hemsidas gränssnitt, inte direkt ifrån databasen.

Är det så du vill göra? Dvs hämta innehåll ifrån en annans sida så här:

<iframe frameborder="0" style="height:600px"  width="700" src="http://62.20.1.221/3/dacksok/sommardack_2015.php?__utma=15615081.922051965.1380800288.1381821073.1381821232.31&__utmb=15615081.68.10.1381821232&__utmc=15615081&__utmx=-&__utmz=15615081.1381821232.31.4.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=http://www.okq8.se/privat/pastationen/dack/start&__utmv=-&__utmk=146009716"></iframe>

Exempel: Hämta aktuella sommardäckspriser ifrån OKQ8...
(reservation för att det utgör ett intrång enligt upphovsrättslagen om koden används - U.P.A.)

// Göran

Korrekt. Jag gjorde så

LBiStockholm's picture

Korrekt. Jag gjorde så här:

1) I den mapp som hanterar www.example.com/resurs, en .htaccess med följande:

RewriteEngine On
RewriteRule (.*) http://www.dold-resurs.com/$1 [P,L]

2) I den mapp som hanterar www.dold-resurs.com, i settings.php

$base_url = 'www.example.com/resurs';  // NO trailing slash!

Klart! Nästan, nu måste man hantera formulär etc. Se
https://www.drupal.org/node/244593

Sweden

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: