2016-07-12 11 views
1

Ich bin nicht zu sehr darauf, wie htaccess Dateicodierung funktioniert, aber ich habe die folgenden htaccess-Code in meinem Stammverzeichnis und es ist verantwortlich für die Umleitung von URL.html zu URL.php:website htaccess redirect konflikt mit wordpress

RedirectMatch permanent ^(.*)\.htm(l?)$ $1.php 


RewriteEngine on 
RewriteRule ^index\.htm$ index.php [NC,R] 

Dieser Code ist wichtig, da alle Dateinamen auf der Website wurde von ‚html‘ auf ‚php‘ gewechselt und ich möchte alle Lesezeichen und Links aus der Zeit vor der Änderung über gültig bleiben.

Das Problem ist, der oben genannte htaccess-Code scheint zu verhindern, dass der Wordpress-Blog geöffnet wird und die Meldung "Zu viele Weiterleitungen sind beim Öffnen der URL aufgetreten" angezeigt.

Offensichtlich gibt es eine Art Redirect-Loop passiert, aber ich kann nicht für das Leben von mir genau herausfinden, was das Problem ist.

In meinem Wordpress-Verzeichnis (/ Blog) die .htaccess-Datei enthält die üblichen für Wordpress:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 
</IfModule> 
# END WordPress 

Wenn die obige .htaccess-Datei entfernt wird, die Wordpress-Index-Datei funktioniert gut, aber da die Wordpress .htaccess Datei schreibt Die Regeln für die Post-URLs funktionieren nicht mehr.

Zusammenfassend denke ich, es gibt einen Konflikt zwischen den beiden htaccess-Dateien (erste im Stammverzeichnis, zweite im Verzeichnis/blog), die eine Umleitungsschleife erstellt.

Irgendwelche Ideen, wie ich das lösen könnte, werden sehr gut angenommen.

Vielen Dank im Voraus.

+0

Haben Sie die Ordner versucht, Aufspalten und Zurücksetzen httpd.conf Ihres Apache? – arcee123

+0

Danke für Ihren Vorschlag. Ich werde ehrlich sein, ich habe keine Ahnung, wie das geht. – user1514406

+0

Sie sind in Linux, ja? – arcee123

Antwort

1

die Rewrite-Schleife zu verhindern, können Sie die folgenden Befehle verwenden:

RewriteEngine on 
#stop internal redirection 
RewriteCond %{ENV_REDIRECT_STATUS} 200 
RewriteRule^- [L] 
#Redirect /foo.html to /foo.php 
RewriteRule ^(.*?)\.html?$ /$1.php [L,R] 

beide ersetzen RedirectMatch und RewriteRule mit den oben genannten Regeln

+1

Brilliant! Arbeitete perfekt. Ich danke dir sehr!! – user1514406

+0

Nur eine letzte Frage. Der erste htaccess Code in meiner ursprünglichen Frage wurde von 'htm' zu 'php' umgeleitet, aber dieser tut es nicht. Wie kann ich von html und 'htm' zu 'php' umleiten? Vielen Dank. – user1514406

+1

Gelöst: Ich habe die RewriteRule geändert in: RewriteRule^(. *?) \. Htm (l?) ​​$ /$1.php [L, R] – user1514406