2012-03-27 3 views
1

Jede der Regeln in der Datei funktioniert gut, wenn ich die andere auskommentiere, aber die beiden zusammen erreichen keinen Zweck, sondern macht die Website hässlich. Irgendwelche Vorschläge, wie man das löst? Vielen Dank.Wie behebe ich den Konflikt der Regeln in dieser .htaccess-Datei?

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

# If the request is for a valid directory 
RewriteCond %{REQUEST_FILENAME} !-d 
# If the request is for a valid file 
RewriteCond %{REQUEST_FILENAME} !-f 
# If the request is for a valid link 
RewriteCond %{REQUEST_FILENAME} !-l 
# do not do anything 
RewriteRule^- [L] 

# forward /blog/foo to blog.php/foo 
RewriteRule ^blog/(.+)$ blog.php/$1 [L,NC] 

# forward /john to user_page/profile.php?name=john 
RewriteRule ^((?!blog/).+)$ user_page/profile.php?uid=$1 [L,QSA,NC] 

Antwort

1

ich dies schließlich dachte ich heraus. Ich habe die zweite Neuschreibbedingung modifiziert, weil die zweite Neuschreibungsregel zu einer URL umleitet, die nicht notwendig gültig ist, d. H. www.example.com/username an die beabsichtigte gültige URL, die wie folgt aussieht www.example.com/user_page/profile.php?user=username.

Ich habe auch die letzte/zweite Rewrite-Regel modifiziert, wie Safarov vorgeschlagen hat und es hat funktioniert! Unten ist die vollständige .htaccess Datei.

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

# If the request is for a valid directory 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
# OR If the request is for a valid file 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
# OR If the request is for a valid link 
RewriteCond %{REQUEST_FILENAME} -l 
# do not do anything 
RewriteRule^- [L] 

# forward /blog/foo to blog.php/foo 
RewriteRule ^blog/(.+)$ blog.php/$1 [L,NC] 

# forward /john to user_page/profile.php?name=john 
RewriteRule ^(.+)$ user_page/profile.php?uid=$1 [L,QSA] 
+0

+1 für alles herausfinden. Ich habe jedoch eine kleine Korrektur in Ihrem Code vorgenommen und habe mir die Freiheit genommen, Ihre Antwort zu bearbeiten. – anubhava

+0

@anubhava, danke noch einmal. – Chibuzo

2

Versuchen Sie ersetzen RewriteRule ^((?!blog/).+)$ mit RewriteRule ^(.+)$ es keine Notwendigkeit für blog Zeichenfolge zu überprüfen, ist wieder

+0

Ich habe versucht, dass es alle eingehenden URL Karten/user_page profile.php – Chibuzo

+0

.htaccess Fluss arbeitet, ist nach oben nach unten zu, so setzen Sie alle Ihre Regeln vor diesem. Und der Rest wird zu profile.php – safarov

+0

Hey! Danke, ich habe es herausgefunden! – Chibuzo

Verwandte Themen