2016-07-01 9 views
1

Ich bin Apache auf Ubuntu 14.04 und versuchen, 301 Redirects einrichten. Umleitung funktioniert, aber nicht wie erwartet. Hier ist, was ich habe:Richten 301 Redirect von Unterverzeichnis zu spezifischen HTML-Datei

#REDIRECTS 
Options +FollowSymLinks 
RewriteEngine On 


# REMOVES INDEX.PHP 
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 

# REDIRECT SPECIFIC PAGES 
Redirect 301 /main http://mikeheavers.com 
Redirect 301 /main/ http://mikeheavers.com 
Redirect 301 /main/code http://mikeheavers.com/tutorials.html 
Redirect 301 /main/code/ http://mikeheavers.com/tutorials.html 

Die ersten beiden redirect 301 Arbeit, aber der Rest, wie /main/code, versuchen zu http://mikeheavers.com/code und beachten Sie http://mikeheavers.com/tutorials.html zu umleiten. Was mache ich falsch?


Update: beachten Sie, dass ich müssen in der Lage sein Urls beide enthalten umleiten und nicht enthält, die hintere Schrägstrich

Antwort

0

nicht mod_rewrite Regeln mit mod_alias mischen, die Redirect Richtlinie hat. Verwenden Sie diese Option:

#REDIRECTS 
Options +FollowSymLinks 
RewriteEngine On 

# REDIRECT SPECIFIC PAGES 
RewriteRule ^main/?$ http://mikeheavers.com [L,NC,R=301] 
RewriteRule ^main/code/?$ http://mikeheavers.com/tutorials.html [L,NC,R=301] 

# REMOVES INDEX.PHP 
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 

Stellen Sie sicher, dass Ihr Browser-Cache löschen, bevor diese Änderung zu testen.

+0

Danke - wie gehe ich mit der Situation, wo ich in der Lage sein soll, die URL mit oder ohne den nachfolgenden Schrägstrich obwohl umleiten? Ich glaube, dass Ihr Beispiel nur den abschließenden Schrägstrich einschließt. – mheavers