it-swarm.com.de

Entfernen Sie .php und id von der URL und ersetzen Sie sie durch einen Schrägstrich

Ich habe viele Regeln zum Umschreiben von URLs in . Htaccess ausprobiert, aber ich stecke jetzt fest. Ich muss diese URL ändern:

    products.php?id=31

zu

    products/31

Ich habe benutzt:

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

    ## don't touch /forum URIs
    RewriteRule ^forums/ - [L,NC]

    RewriteCond %{THE_REQUEST} \s/+products(?:\.php)?\?id=([0-9]+) [NC]
    RewriteRule ^ products/%1? [R,L]

    RewriteRule ^products/([0-9]+)/?$ products.php?id=$1 [L,QSA]

    ## hide .php extension snippet
    # To externally redirect /dir/foo.php to /dir/foo
    RewriteCond %{THE_REQUEST} \s([^.]+)\.php [NC]
    RewriteRule ^ %1 [R,L]

    # To internally forward /dir/foo to /dir/foo.php
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.+?)/?$ $1.php [L]

Damit erhalte ich folgendes Ergebnis:

  products/31

Aber alle Bilder und CSS werden nicht angezeigt. Irgendwelche Ideen?

1
dpluv

Versuche dies:

RewriteEngine on
RewriteRule ^(.*) $1 [L]
RewriteRule ^products/$ products.php?id=31 [L]

Dieser Code funktioniert gut für mich. Für weitere Informationen: http://www.askapache.com/htaccess/htaccess.html

2
Ravi

Versuche dies:

RewriteRule ^(.*)\/$ $1.php [NC]
2
Sri

über die Bilder und CSS nicht angezeigt; Wenn Ihre URL in so etwas wie products/31 umgeschrieben wird, denken Sie daran, dass relative Links in HTML jetzt relativ zu products/sind, obwohl sich das PHP-Skript selbst im Stammverzeichnis befindet. Weil der HTML-Code vom Browser interpretiert wird und der Browser denkt, dass Sie sich im Ordner products/befinden. Sie können absolute URLs verwenden (beginnend mit http: // hostname / oder nur relativ zu root, also beginnend mit /) oder sie auch neu schreiben lassen.

1
multia