2017-10-28 2 views
0

ich von.htaccess für Übergabe von Parametern umschreiben

meine URL ändern

www.example.com/collections.php?id=abc123 zu www.example.com/collections/abc123

ich .htaccess wie diese verwenden möchten:

Options -Indexes 
RewriteEngine On 

RewriteRule ^collections/(\w+)/?$ collections.php?id=$1 [QSA,L,NC] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

Nun, wenn ich schreibe www.example.com/collections/abc123 in Browser, mein Die Webseite zeigt, ohne irgendwelche CSS-Dateien oder Skripte zu laden. kann jemand darauf hinweisen, was fehlt?

Vielen Dank.

+1

'RewriteCond% {REQUEST_FILENAME} \. Php -f' keinen Sinn macht. Du brauchst es nicht. Sie benötigen 'RewriteCond% {REQUEST_FILENAME}! -f'. Wenn der Dateiname kein vorhandenes Verzeichnis und keine vorhandene Datei ist, wenden Sie die folgende Regel an. die '\ .php' ist zu viel –

+0

Für Ihr Problem: Überprüfen Sie das Apache Fehlerprotokoll. Da sollte ein Hinweis drin sein. –

+0

fügen Sie dies direkt unter '' Abschnitt des HTML Ihrer Seite hinzu: '' – anubhava

Antwort

1

Nun, offenbar verwenden Sie einen relativen Pfad beim Verweisen auf Ihre Skripte. Was passiert, ist, dass Ihr Browser versucht, diese Ressourcen aufgrund der zusätzlichen / in der URL falsch abzurufen, wodurch er denkt, dass Sie in ein anderes Verzeichnis navigiert sind. Sie können hier stattdessen absolute Pfade angeben.

wäre ein Beispiel http://example.com/css/style.css im Gegensatz sein /css/style.css