Veröffentlichungsdatum: 07. Dezember 2016
Änderungsdatum: 11. November 2024
seo hauptverzeichnis mod_rewrite rewrite ausblenden
Dieser Artikel beschreibt, wie Sie das Hauptverzeichnis Ihres Projektes in der Ausgabe ausblenden.
Falls Sie das Hauptverzeichnis eines Projektes als unnötig oder sogar
störend empfinden, können Sie dieses einfach ausblenden. Häufig ist dies in Bezug auf Suchmaschinen erwünscht (SEO). Arbeiten Sie in solchen Fällen am besten mit sehr eindeutig benannten Projektverzeichnisnamen, welche es sonst in Unterverzeichnissen oder anderen Projekten nicht als Verzeichnisname gibt (z.B. /projekt1-46275291-de/).
Um das Hauptverzeichnis auszublenden, müssen Sie an zwei Stellen eingreifen. Dieser Beitrag zeigt, wie das Projektverzeichnis mit dem Verzeichnisnamen /[IHR-INHALTS-PROJEKT] ausgeblendet wird.
Lassen Sie die Lizenz auf eine Pflege-Subdomain wie z.B. "cms.IhreDomain.tld" ausstellen, damit Sie sich über diese Subdomain einloggen und bearbeiten können.
Die Anfragen ohne Hauptverzeichnis müssen über .htaccess so
umgeschrieben werden, dass das existierende Hauptverzeichnis davor
gesetzt wird. Hierzu legen Sie in der DOCUMENT_ROOT Ihrer (Sub)Domain eine .htaccess Datei mit folgendem Inhalt ab (Beispielpfade).
Die Domain (IhreDomain\.tld) und Pfadangaben (/IhrInhaltsProjekt etc.) ersetzen Sie durch Ihre Domain und Pfade!
Wir empfehlen beim Ausblenden des Hauptverzeichnisses die Aufrufe zu diesem Projekt nur über eine bestimmte Domain zu erlauben. Ansonsten kann es gerade bei CMS-Installationen mit mehreren Projekten zu Konflikten kommen.
RewriteEngine on RewriteBase / ## Optional: ## Trailing-Slash-Problem abfangen im Zusammenhang mit dem Ausblenden des Hauptverzeichnisses: RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{DOCUMENT_ROOT}/[IHR-INHALTS-PROJEKT]%{REQUEST_URI} -d RewriteRule ^(.*)$ /$1/ [L,R=301] # HTTP-Aufrufe erfolgen entweder mit oder ohne www # mit www: RewriteCond %{HTTP_HOST} ^IhreDomain\.tld$ [NC] RewriteRule ^(.*)$ http://www.IhreDomain.tld/$1 [NE,R=301,L] # wenn Sie die HTTP-Aufrufe ohne www setzen wollen: # RewriteCond %{HTTP_HOST} ^www\.IhreDomain\.tld$ [NC] # RewriteRule ^(.*)$ http://IhreDomain.tld/$1 [R=301,L] # Hauptverzeichnis ausblenden: # Aufruf ohne www: ^IhreDomain\.tld$ // Aufruf mit www: ^www\.IhreDomain\.tld$ RewriteCond %{HTTP_HOST} ^www\.IhreDomain\.tld$ RewriteCond %{REQUEST_URI} !^\/[IHR-INHALTS-PROJEKT]\/ RewriteCond %{REQUEST_URI} !^\/[IHR-INHALTS-PROJEKT]-wAssets\/ RewriteCond %{REQUEST_URI} !^\/[IHR-INHALTS-PROJEKT]-wGlobal\/ RewriteCond %{REQUEST_URI} !^\/weblication\/ RewriteCond %{REQUEST_URI} !^\/cloud\/ RewriteCond %{REQUEST_URI} !^\/favicon\.ico RewriteCond %{REQUEST_URI} !^\/robots\.txt RewriteRule ^(.*)$ /[IHR-INHALTS-PROJEKT]/$1 [L] ## !! Beachten Sie die Hinweise unten !!
Um die Links in den generierten Seiten entsprechend umzuschreiben, können Sie ab Weblication® CMS Version 10.x mit aktueller BASE auf bereits vordefinierte Abfragen und Funktionen zurückgreifen.
Ab CMS-Version 011.002.143.000 ist die nachfolgend beschriebene Umsetzung auch direkt über die Maske der Projekteinstellungen des Projekt-/Sprach-Verzeichnisses möglich.
Die pre.php des BASE Projektes ist bereits im Standard mit den entsprechenden Funktionsaufrufen ausgestattet, die sich auf Funktionen beziehen, die in der wMyProject.php definiert sind:
Die genaue Definition der Funktionen (PHP-Code) ist in diesem Artikel nicht angeführt, sondern entnehmen Sie bitte immer der aktuellsten BASE Projektbasis.
Durch Einsatz dieser Funktionen werden Links innerhalb der Seiten ohne das Hauptverzeichnis gesetzt. Die Ausgabe wird lediglich für nicht eingeloggte Benutzer umgeschrieben! Die Abfrage berücksichtigt zudem den Einsatz der Weblication® CMS Volltextsuche, des Newsletter-Modules und des Versionierungs-Modules (Versionenanzeige).
// ...
// Hier wird das Weblication Framework eingebunden
include_once($_SERVER['DOCUMENT_ROOT'].'/weblication/grid.php');
// Projektspezifische Funktionen einbinden
include_once($_SERVER['DOCUMENT_ROOT'].'/[IHR-INHALTS-PROJEKT]-wGlobal/wGlobal/scripts/php/wMyProject.php');
// Leitet Aufrufe bei Bedarf um
wMyProject::executeAccessRules();
// ... (der Sourcecode der pre.php zwischen beiden Aufrufen ist hier im Beispiel nicht angeführt) ...
// Hier wird das globale Steuerungsskript eingebunden
include($_SERVER['DOCUMENT_ROOT'].'/weblication/grid5/default/project/wGlobal/scripts/pre.php');
$preResult = wMyProject::executeRewriteRules($preResult);
// ...
Um die Links in den generierten Seiten entsprechend umzuschreiben, filtern Sie dies über die pre.php Ihres Projektes. Somit werden Links innerhalb der Seiten ohne das Hauptverzeichnis gesetzt. Die Ausgabe wird lediglich für nicht eingeloggte Benutzer umgeschrieben! Die Abfrage berücksichtigt zudem den Einsatz der Weblication® CMS Volltextsuche, des Newsletter-Modules und des Versionierungs-Modules (Versionenanzeige). In der pre.php ist hierzu eine Abfrage vor der Transformation und eine nach Transformation erforderlich.
Wie im folgenden Quelltextbeispiel angeführt, setzen Sie am Anfang der pre.php direkt hinter die schon bestehende Zeile zum Include der /weblication/grid.php die if-Abfrage für das Redirect ein und passen diese auf Ihr Verzeichnis an.
// ...
// Hier wird das Weblication Framework eingebunden
include_once($_SERVER['DOCUMENT_ROOT'].'/weblication/grid.php');
// Umleitung für Hauptverzeichnisaufrufe (Hauptverzeichnis "ausblenden"):
// Das Projektverzeichnis kann somit nicht mehr per Direktaufruf erreicht werden (wird "ausgeblendet")
// Beachten Sie, dass das Redirect in der obersten /index.php dann auch umgeschrieben werden muss (ohne Angabe Hauptverzeichnis)!
$dirToHide = 'IhrInhaltsProjekt';
if(!wRequest::isSearchBot() && preg_match('/^\/'.$dirToHide.'\//', $_SERVER['REQUEST_URI']) && !preg_match('/wEditor\.php/', $_SERVER['REQUEST_URI']) && !preg_match('/diffTmp_/', $_SERVER['REQUEST_URI']) && !preg_match('/newsletter\/newsletters/', $_SERVER['REQUEST_URI']) && !preg_match('/documents\/drafts/', $_SERVER['REQUEST_URI'])){
$urlRedirect = preg_replace('/^\/'.$dirToHide.'\//', '/', $_SERVER['REQUEST_URI']);
header("Location: $urlRedirect", true, 301);
exit;
// Umschreiben der Links der generierten Seiten erfolgt weiter unten (siehe: Hauptverzeichnis "ausblenden" - Links umschreiben)
}
// ... (der Sourcecode der pre.php zwischen beiden Aufrufen ist hier im Beispiel nicht angeführt) ...
// Hier wird das globale Steuerungsskript eingebunden
include($_SERVER['DOCUMENT_ROOT'].'/weblication/grid5/default/project/wGlobal/scripts/pre.php');
// Hauptverzeichnis "ausblenden" - Links umschreiben
if(wUserCur::getName() == '' && !wRequest::isSearchBot()){
// Hauptverzeichnis aus Links rausnehmen:
$preResult = preg_replace("/([\"'>])\/$dirToHide\//", "$1/", $preResult);
// beim Einsatz der mobileAPP zusätzlich:
// $preResult = preg_replace("/([wOpenUrl\(\'])\/$dirToHide\//", "$1/", $preResult);
// Hauptverzeichnis aus Google-Sitemap (google-sitemap.php) rausnehmen:
if(stristr(wRequest::getPath(), 'google-sitemap')){
$preResult = preg_replace("/\/$dirToHide\//", "/", $preResult);
}
}
// ...
Durch das Ausblenden des Hauptverzeichnisses kann es je nach Projekt und Umsetzung zu Störungen von Funktionen oder Werkzeugen in Weblication® kommen, weshalb der Einsatz auf eigene Verantwortung erfolgt!