2016-04-25 18 views
0

Für die Herstellung freundliche URLs besteht, Folgen ist die .htaccess-Code angewandt:.htaccess Umleitung, wenn Verzeichnis

RewriteEngine On 

RewriteCond %{THE_REQUEST} /.+?\.php[\s?] [NC] 
RewriteRule^- [F] 

RewriteRule ^([^/\.]+)$ index.php?id1=$1 [NC,L,QSA] 
RewriteRule ^([^/\.]+)/([^/\.]+)$ index.php?id1=$1&id2=$2 [NC,L,QSA] 

Das funktioniert jetzt:

  1. mydomain.com/pages zu mydomain.com/index.php?id1=pages

  2. mydomain.com/pages/xyz zu mydomain.com/index.php?id1=pages&id2=xyz

auch, wenn ich mydomain.com/index.php?id1=pages&id2=xyz manuell in die URL eingeben, leitet es an mydomain.com um.

Nun, wenn ich eine andere wie mydomain.com/templates eingeben, wo Vorlagen ein Verzeichnis ist, die vorhanden ist, leitet es an mydomain.com/templates/?id1=templates

Edit 1:

Ich habe versucht, diese Zeile hinzufügen, aber vergeblich:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC] 
RewriteRule ^(.+?)/?$ /$1.php [L] 

Wie soll ich diese Bedingung umgehen (wenn ein Verzeichnis mit diesem Namen existiert) mit htaccess?

Antwort

1
RewriteEngine On 

RewriteCond %{THE_REQUEST} /.+?\.php[\s?] [NC] 
RewriteRule^- [F] 
#serve dirs without rewriting 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L]  
##### 
RewriteRule ^([^/\.]+)$ index.php?id1=$1 [NC,L,QSA] 
RewriteRule ^([^/\.]+)/([^/\.]+)$ index.php?id1=$1&id2=$2 [NC,L,QSA] 
+0

Ich bekomme die gleichen Ergebnisse .. Ich habe versucht mit Ihrer und der mit dem bearbeiteten Text in der Frage. – Thamilan