2014-10-21 10 views
5

Ich kämpfe mit einem uralten Problem. Ich habe eine Seite mit ziemlich guter SEO und einem eklatanten Problem geerbt. Die gesamte Site wird im Unterverzeichnis/site/gehostet. Ich habe entschieden, dass ich die Site an der Wurzel laden muss. So etwas wie http://example.org/site/index.php wird stattdessen umleiten zu /index.php (< - das als ein Link gezählt, wenn es unklar ist, ich meine, es ist die Wurzel der Website/index.php.)Erweiterte 301 Redirect für eine ganze Site bei Site-Root?

Wir verwenden Joomla für unser Backend und es gibt an dieser Stelle hunderte von Seiten auf der Seite. Ich habe Probleme damit, die Weiterleitungen, die ich gesehen habe, zu tun, was ich von ihnen möchte. Grundsätzlich sollte jede Seite, die unsere Besucher von einem alten Link mit /site/ darin besuchen, auf den gleichen Link umgeleitet werden, aber ohne den Stern.

Ich bin offen für das Laden der Seite von/site/und so, als ob es von root aussieht. Es ist mein Verständnis, dass dies mit einigen Fortschritten Mod-Neuschreiben (http://kb.mediatemple.net/questions/85/Using+.htaccess+rewrite+rules#gs?) Gemacht werden kann, aber ich hatte noch keinen Erfolg. Ich betreibe eine Beta-Site, die die übergeordnete Site in einer Subdomain nachahmt, die ich bereits von/site/nach/verschoben habe, damit ich viele .htaccess-Konfigurationen testen kann.

Jede Hilfe wird geschätzt ... danke!

+0

ich das gefunden, dass der Trick scheint zu tun ... RewriteCond% {http_host}^www.beta.example.org $ [nc] RewriteRule^$ http! (. *): // Beta. example.org/$1 [r = 301, nc, L] Weiß jemand, ob dieser Code mit der Joomla URL funktioniert, die ebenfalls aktiviert ist? So kann es auch die /index.php/ von der Seite entfernen? Ich bin mir auch nicht sicher, wie dieser Code funktioniert, aber er scheint genau das zu tun, wozu ich ihn brauche. – Daystar1124

Antwort

1

Dies scheint die funktionierende Antwort zu sein, mit der ich gehen werde. Im Grunde genommen muss dies in das Verzeichnis eingefügt werden, von dem Sie umleiten möchten, in meinem Fall also root/site /.


RewriteEngine auf

RewriteCond% {HTTP_HOST}!^Www.beta.example.org $ [NC]

RewriteRule^(. *) http://beta.example.org/ $ $ 1 [R = 301, NC , L]


Ich nehme an, die erste Regel ignoriert www? Ich würde gerne damit umgehen, bin mir aber nicht sicher, warum es überhaupt erstellt worden wäre. Dadurch wird jede URL neu geschrieben, die auf diese .htaccess-Datei zugreift (innerhalb Ihres Unterverzeichnisses) und Sie zur selben URL führt, ohne den Unterverzeichniseintrag. Es funktioniert nicht wirklich mit dem index.php rewrite tool, aber das ist in Ordnung, weil es immer noch die richtige Seite erreicht.

Wenn jemand eine bessere Option für mich mit der Verwendung mit Joomla hat, würde ich mich freuen, es zu hören. Aber ich werde das jetzt tun, weil es mir großartige Ergebnisse bringt.

+0

der erste ignoriert nicht www; 'RewriteCond' [sagt] (http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond)" hey, wenn das stimmt, gibt es etwas, was du tun musst ". Das "Etwas" ist natürlich die RewriteRule. Ihre Antwort scheint aufgrund Ihrer Frage ziemlich falsch zu sein. Wenn Sie es nicht akzeptieren, gebe ich eine bessere Regel. – tedder42

+1

[Diese Antwort] (http://stackoverflow.com/a/18468916/1470907) scheint für Ihre Frage passender. Die Regel in Ihrer Antwort besagt effektiv: 'Wenn die Domäne nicht mit 'www' beginnt, wird auf eine Version ohne 'www' umgeleitet. Dies würde normalerweise eine Umleitungsschleife verursachen, aber das wird hier vermieden, indem an einen Ort umgeleitet wird Von dieser Regel nicht betroffen. Sie können die Zeile "RewriteCond" entfernen und einen Pfad anstelle einer vollständigen URL in der Regel verwenden, um die Absicht der Regel zu verdeutlichen. – Stecman

+0

Vielen Dank für die Erklärung dieses. Ich akzeptierte meins und akzeptierte die Antwort der Jungs unten, weil er einen fantastischen Job macht. Gibt es einen besseren Weg? Ich würde gerne die beste Antwort ändern, wenn jemand @chesterbr unten verbessert. Ich nehme an, seine Antwort würde auch am besten mit bestehender SEO funktionieren. Ich akzeptierte das, was ich als Antwort fand, nur weil es so aussah, als würde es tun, was ich wollte. – Daystar1124

0

, wenn Ihr Server apache2 ist, können Sie konfigurieren es

<VirtualHost *:80> 
ServerName sitio.com 
ServerAlias www.sitio.com 
DocumentRoot /home/user/public_html/sitio/ 
... 
</VirtualHost> 

Sie müssen Berechtigungen für diese Änderung