Posted by LBiStockholm on April 1, 2015 at 9:13pm
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
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
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
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
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
Jag har nog tänkt helt fel i detta. Ordet är nog 'proxy'.
Jag omformulerar:
1) Jag har en publik webbplats
www.example.com2) jag har en resurs som ska vara dold
www.dold-resurs.com3 Resursen ska hanteras genom
www.example.com/resurspå så sätt attwww.example.com/resurs/foohämtar sitt innehåll frånwww.dold-resurs.com/fooProxy?
Det finns en sak till i setting.php
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
Det ska fungera på liknande sätt som en iFrame.
Gällande iframe
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å
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