Ich habe eine Herausforderung mit Apache.Htaccess URL umschreiben Frage
In meiner .htaccess-Datei würde Ich mag Anfragen wie diese konvertieren:
url/Portfolio/filename.htm
zu:
url Dateiname
Irgendwelche Abnehmer? Danke für deine Zeit
Ich habe eine Herausforderung mit Apache.Htaccess URL umschreiben Frage
In meiner .htaccess-Datei würde Ich mag Anfragen wie diese konvertieren:
url/Portfolio/filename.htm
zu:
url Dateiname
Irgendwelche Abnehmer? Danke für deine Zeit
So etwas sollte funktionieren, obwohl ich es nicht getestet habe.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)/portfolio/(.*)\.htm$ $1?$2 [PT,L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>
Alec, vielen Dank für die schnelle Antwort. Ich habe es ausprobiert und es scheint nicht zu funktionieren, also habe ich einen Regex-Tester benutzt, um zu sehen, was da oben los ist ... gibt es eine Chance für eine 'Delimiter-Kollision'? Danke D –
Sie haben mehrere Möglichkeiten, je nachdem, wie die URL für Besucher (und Suchmaschinen) angezeigt werden soll.
Wenn Sie möchten, dass die extern sichtbare URL url/portfolio/filename.htm
bleibt, funktionierte Alecs Lösung, nachdem ich die beiden RewriteCond
Zeilen entfernt hatte.
RewriteEngine On
RewriteRule ^(.*)/portfolio/(.*)\.htm$ $1?$2 [PT,L]
Wenn andere Parameter in dem Query-String sein könnten und Sie wollen diejenigen erhalten, fügen Sie QSA
zu den Optionen in Klammern am Ende der Regel.
Wenn man die Leute draußen wollen url?filename
statt, um zu sehen, um die Regel zu ändern:
RewriteRule ^(.*)/portfolio/(.*)\.htm$ $1?$2 [L,R]
Gleiche Qualifikation über andere Abfrageparameter gilt.
Wenn das immer noch nicht hilft, schlage ich vor, dass Sie die Protokollierung umschreiben und in diesem Protokoll nach weiteren Hinweisen suchen. Posten Sie sie hier und jemand wird helfen. Sie müssen diesen Teil möglicherweise in httpd.conf
setzen. Mein Apache mochte es nicht in .htaccess
.
RewriteLog ...path...
RewriteLogLevel 3 # you'll regret anything higher
Dies sollte funktionieren:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^portfolio/(.+)\.htm$ index.php?$1 [NC,L]
oder wenn Sie wollen, dass es sichtbar ändern:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^portfolio/(.+)\.htm$ /?$1 [R,NC,L]
Die zweite wie example.com/?filename auf das aussehen würde Benutzer, während der erste wie example.com/portfolio/filename.htm aussehen würde.
Hoffnung, das hilft.
Bitte seien Sie etwas genauer. Was bedeutet "URL" in Ihrem Beispiel? Und ist das "Portfolio" festgelegt? – Gumbo