2017-02-10 6 views
0

Ich kann meine URLs nicht in SEO-freundliche umgeschrieben bekommen. Ich habe eine Menge Schnipsel von hier und anderen Orten ausprobiert, aber keiner von ihnen scheint zu funktionieren - ich bin mir nicht sicher warum!htaccess 'Pretty URLs' funktioniert nicht

Die Rewrite-Engine ist definitiv funktioniert und aktiviert, wie ich es für Domain-und IP-canocalisation verwende. Es funktioniert einfach nicht mit URL-Umschreiben.

Ich möchte die URLs lesen; xxx.com/profile/Name anstelle von xxx.com/profile.php?user=Name.

Der Code, den ich gerade versuche, ist;

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^profile/([^/]+)$ /profile.php?user=$1 [L] 

Mein vollen .htaccess-Code ist;

ErrorDocument 404 http://localhost/CE/?404=1&page=1 

<IfModule mod_headers.c> 
# Set XSS Protection header 
Header set X-XSS-Protection "1; mode=block" 
</IfModule> 

# allow all except those indicated here 
<Files *> 
order allow,deny 
allow from all 
deny from 188.143.232.32 
deny from 188.143.232.27 
deny from 188.143.234.155 
deny from 188.143.*.* 
</Files> 

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^profile/([^/]+)$ /profile.php?user=$1 [L] 

# Canocial IP 
RewriteCond %{HTTP_HOST} ^217\.160\.0\.148 [nc,or] 

# Canocial URL 
RewriteCond %{HTTP_HOST} ^www\.xxx\.com$ 
RewriteRule ^/?$ "http\:\/\/xxx\.com\/" [R=301,L] 

RewriteCond %{HTTP_USER_AGENT} libwww-perl.* 
RewriteRule .* ? [F,L] 

<IfModule mod_expires.c> 
    ExpiresActive on 

    ExpiresByType image/jpg "access plus 3 days" 
    ExpiresByType image/jpeg "access plus 3 days" 
    ExpiresByType image/gif "access plus 1 month" 
    ExpiresByType image/png "access plus 1 month" 
</IfModule> 

Ich habe Probleme mit diesem Zeug, bevor sie auf einem anderen Projekt hatte und nie wirklich gelöst, so dass es gut sein würde, eine Lösung zu finden, die funktioniert.

Hinweis: Ich habe viele andere "Lösungen" auf Stack Overflow überprüft - keiner, den ich versucht habe, hat funktioniert.

Antwort

2

Probieren Sie es wie unten Regel

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^profile/([^/]+)$ profile.php?user=$1 [L] 

Above ich einen führenden Schrägstrich von profile.php entfernt, was ein Problem sein könnte.

+0

Werke - danke! Aber jetzt verursacht ein Problem mit einer Galerie, die die Benutzervariable übernimmt und sie in einer SQL-Abfrage verwendet, um Bilder abzurufen. Ich habe Code, der einen Platzhalter anzeigt, wenn kein Bild verfügbar ist oder nicht abgerufen werden kann. Sie sind jetzt nur gebrochene Bilder, die blinken. – Ben

+0

Erhalten Sie die Benutzervariable in der Datei profile.php Wenn Sie dann ein anderes Problem haben, versuchen Sie bitte 'in Ihrer Seite. –

+0

Ich habe gerade in der Produktion getestet und es funktioniert so weit wie das Umschreiben der URL geht, aber alle Informationen aus der Datenbank nicht angezeigt werden - es zeigt nur eine leere, unbestückte Vorlage. Ich habe bereits die Basis href konfiguriert. Die Variable wird in der Datei profile.php verwendet. – Ben