2017-07-18 2 views
1

Ich habe akzeptiert und es funktioniert gut:Mehrere Rewrite-Regeln erstellen nicht ein Parameter dieses .htaccess-Datei

RewriteEngine On 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /index.php? 
locale=$1&section=$2&action=$3&id=$4 [L] 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /index.php?locale=$1&section=$2&action=$3 [L] 
RewriteRule ^([^/]*)/([^/]*)$ /index.php?locale=$1&section=$2 [L] 

Aber wenn ich eine weitere Zeile einen Parameter hinzuzufügen, für einzelne es explodiert. Dies ist die letzte Datei:

RewriteEngine On 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /index.php? 
locale=$1&section=$2&action=$3&id=$4 [L] 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /index.php?locale=$1&section=$2&action=$3 [L] 
RewriteRule ^([^/]*)/([^/]*)$ /index.php?locale=$1&section=$2 [L] 
RewriteRule ^([^/]*)$ /index.php?locale=$1 [L] 

Und dies ist die Fehlermeldung:

Internal Server Error 

The server encountered an internal error or misconfiguration and was unable to complete your request. 

Please contact the server administrator at [email protected] to inform them of the time this error occurred, and the actions you performed just before this error. 

More information about this error may be available in the server error log. 

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request. 

Antwort

0

Ihr Server-Fehlerprotokoll wird wie etwas haben,

Antrag die Grenze von 10 internen Umleitungen überschritten aufgrund eines möglichen Konfigurationsfehlers. Verwenden Sie 'LimitInternalRecursion', um das Limit bei Bedarf zu erhöhen. Verwenden Sie 'LogLevel debug', um ein Backtrace zu erhalten.

Dies geschieht, wenn beendet mod_rewrite eine URL Verarbeitung und übergibt es dann zurück in den URL-Parser, die dann auf dem Rewrite-Regeln wieder ausführt, auch wenn Sie auf es das erste Mal, jene verflixten [L] Fahnen hatten. Die ersten drei Muster stimmen nicht überein, aber das letzte stimmt mit sich überein.

Für das, was Sie scheinen zu tun werden, die URLs ist Verhübsch-Schlechterung, wahrscheinlich der einfachste Weg, dies zu umgehen ist es, Wege zu einfach zu ignorieren, die für die letzte Regel mit index.php beginnen:

RewriteEngine On 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /index.php?locale=$1&section=$2&action=$3&id=$4 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /index.php?locale=$1&section=$2&action=$3 
RewriteRule ^([^/]*)/([^/]*)$ /index.php?locale=$1&section=$2 
RewriteCond %{REQUEST_URI} !^/index.php 
RewriteRule ^([^/]*)$ /index.php?locale=$1