2016-07-29 10 views
1

Ich habe meinen ganzen Code für meine Website in meinem Dokumentenstamm unter mywebfolder gespeichert. Es gibt viele Unterverzeichnisse, z.B. mywebfolder/deals/..mywebfolder/user/.. und so weiter. Ich hostet derzeit meine Website mit mydomain.com.Mod_Rewrite Einfachste Möglichkeit, Ordner in URL für ALLE Unterverzeichnisse zu verstecken

Ich möchte nicht mywebfolder jederzeit anzeigen, wie es redundant ist und macht meine URLs unnötig länger und schwer zu merken. Ich habe ein mod_rewrite ausgeführt, das dies erreicht, aber nur wenn ich zu mydomain.com gehe. (Das heißt, es funktioniert nur für den Dokumentenstamm). In meinem 000-default.conf Datei habe ich folgendes bekam:

RewriteEngine On 
    <Directory "/var/www/html"> 
      Options Indexes FollowSymLinks MultiViews 
      AllowOverride All 
      Order allow,deny 
      allow from all 
      AuthType Basic 
      AuthName "Restricted Content" 
      AuthUserFile /etc/apache2/.htpasswd 
      Require valid-user 
      RewriteCond %{HTTP_HOST} ^mydomain\.com$ [OR] 
      RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ 
      RewriteCond %{REQUEST_URI} !^/mywebfolder/ 
      RewriteRule(.*) /mywebfolder/$1 
    </Directory> 

Ich verstehe, dass meine Bedingungen für die Rewrite nur tun, wenn ich zu mydomain.com navigieren. Gibt es trotzdem, kann ich diese auf die gesamte Website leicht extrapolieren, so dass beim Navigieren nie ein Benutzer /mywebfolder/ in der URL sieht? Oder muss ich einen Verzeichnisblock für jedes Verzeichnis erstellen?

+0

Ihre Conf scheint in Ordnung und es ist unklar, was nicht funktioniert wie erwartet. Kannst du das Beispiel vollständige URL geben? –

+0

@DusanBajic Das funktioniert nur, wenn ich zuerst zu meiner Domain gehe. Also navigiere ich zu www.mydomain.com' und es geht auf meine Splash-Seite, die sich im Verzeichnis mydomain.com/mywebordner/ befindet, und wird korrekt angezeigt, ohne dass mein Webordner in der URL angezeigt wird. Sobald ich jedoch auf einen der Links klicke und in einen tieferen Unterordner blogge, wird mywebfolder angezeigt. So zum Beispiel klicke ich einen Link von meiner Splash-Seite und es bringt mich zu mydomain.com/mywebfolder/subdirectory/mypage.php. Aber ich möchte es anzeigen: mydomain.com/subdirectory/mypage.php. Gibt es einen Weg, dies zu erreichen? Vielen Dank! – chaseshak

+0

Ja, ich sehe es jetzt. Es ist möglich, aber lass es mich zuerst testen. –

Antwort

1

Versuchen Sie folgendes:

... 
RewriteCond %{HTTP_HOST} ^mydomain\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ 
RewriteRule /mywebfolder/(.*) /$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^mydomain\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ 
RewriteCond %{REQUEST_URI} !^/mywebfolder/ 
RewriteRule /(.*) /mywebfolder/$1 
+0

Dies führte mich tatsächlich zu meiner Lösung .. Sie haben Recht, dass meine ursprüngliche Neuschreibung funktioniert hat, obwohl dies eine bessere Lösung ist. Mein Problem ist, dass alle symbolischen Links auf der Website den/mywebfolder/verwendet haben, sodass er in der Leiste angezeigt wurde. Wenn ich direkt zu einem Link navigiere, würde es funktionieren. Also aktualisiere ich alle meine relativen Links und es scheint jetzt zu funktionieren. Danke für Ihre Hilfe! – chaseshak