2011-01-12 28 views
2

Wenn Besucher gehen, zu sagen ,:.htaccess nicht-www www URL Redirect Löscht jeder URL-Pfad über Basis-URL

http: // website.com/dir/dir2/file.html

Mein Neuschreiben löscht den Pfad über die Basis-URL hinaus und leitet sie auf die Homepage mit www um. in der Front:

http: // www.website.com/

Wie kann ich das Abstreifen von dem Auftreten und das Senden Besucher auf die Homepage statt ihrer angeforderten URL zu verhindern? Zu Ihrer Information, die entsprechenden URLs existieren.

Danke!

Antwort

3

Fügen Sie die Datei/Pfad Informationen über das Ende der Rewrite wie folgt aus:

RewriteCond  %{HTTP_HOST} !^www\.website\.com [NC] 
RewriteCond  %{HTTP_HOST} !^$ 
RewriteRule  ^/(.*)   http://www.website.com/$1 [L,R] 
+0

ich in den Neufassungen fiel nach. RewriteRule * index.php [L], aber es ist noch zu Umleiten die Basis-URL RewriteRule verursacht das Aufhebens? Sollte der von Ihnen vorgeschlagene Code vor der index.php RewriteRule stehen? Danke – tigre

+0

Dies sollte immer deine erste Regel sein. Es steht an der Spitze aller meiner anderen Regeln, weil es zuerst kommen muss. Sobald die Site in die vollqualifizierte Domäne umgeleitet wurde, werden die Bedingungen in dieser ersten Regel nicht mehr erfüllt, sodass sie umgangen werden und der Rest Ihrer Regeln wirksam wird. – dadwithkids

+0

Rick, als Reaktion auf Ihre Antwort unten (da ich es nicht kommentieren kann), kann ich mich nicht erinnern, wofür die zweite Zeile steht. Es kann optional sein, wie Sie vorgeschlagen haben. Die Art, wie die Regex liest, sucht nach einem nicht leeren HTTP_HOST - ich bin nicht wirklich sicher, ob diese Bedingung zutrifft. Ich weiß nur, dass dieses Set aus 3 Zeilen für eine Reihe von Websites, die ich seit einigen Jahren betreue, gut funktioniert hat. – dadwithkids

3

FYI, dies für eine Magento-Website ist.

In .htaccess nach

#RewriteBase /magento/ 

Nachdem legte ich auf den eigenen Linien:

RewriteCond %{HTTP_HOST} !^www\.website\.com$ [NC] 
RewriteRule ^(.*)$ http://www.website.com/$1 [L,R=301] 

Und es funktioniert. Papa mit Kindern hatte es auch richtig, nur nicht wissen, wofür die zweite Zeile war.

+0

... Nein, tut er nicht! das $ in der ersten Zeile ist auch ziemlich hand! – Theodores

1

Die meisten Menschen brauchen RewriteBase Satz, so versuchen:

RewriteEngine on 
RewriteBase/
RewriteCond %{HTTP_HOST} !^(?:www\.your-live-domain\.com|staging\.domain\.com)$ [NC] 
RewriteCond %{HTTP_HOST} !^$ 
RewriteRule .* http://www.your-live-domain.com/$0 [L,R=301] 

Verwenden 301, um es permanent