Ich habe ein CMS, das SEO-freundliche URLs verarbeitet, die mit dem CMS erstellt wurden. Also alles, was eine Erweiterung von index.php
wie www.url.com/index.php?id=slug
wird netterweise geändert in www.url.com/slug
.
Ich habe jedoch auch über tausend Seiten, die mit MYSQL-Abfragezeichenfolgen erstellt werden, die nicht mit meinem CMS verbunden sind. Ich habe also:
www.url.com/item.php?id=001234&pg=author-title
die Informationen in id und pg sind erforderlich, um die Seite zu erstellen. Was ich will, sind für diese Seite urls zu sein:
www.url.com/item/001234/author-title.html
Ich habe mir eine Reihe von mod_rewrite-Tutorials angesehen und nach allen Möglichkeiten gesucht, dies zu tun, aber ich kann es nicht zum Laufen bringen.
Hier ist meine .htaccess (beachten Sie, dass einige der Dinge hier von meinem CMS verwendet und generiert werden:
Edit: Okay, basierend auf den bisherigen Antworten habe ich meine .htaccess wie folgt geändert:
# Use PHP5 as default
AddHandler application/x-httpd-php5 .php
AddDefaultCharset UTF-8
# File modified on Dec 5 11:28:31 2011 by server
# For security reasons, mod_php is not used on this server. Use a php.ini file for php directives
# php_value default_charset "UTF-8"
Options -Indexes
Options +FollowSymLinks
# blocks direct access to the XML files - they hold all the data!
<Files ~ "\.xml$">
Order allow,deny
Deny from all
Satisfy All
</Files>
<Files sitemap.xml>
Order allow,deny
Allow from all
Satisfy All
</Files>
RewriteEngine on
# Usually it RewriteBase is just '/', but
# replace it with your subdirectory path
RewriteBase /
# Usually it RewriteBase is just '/', but
# replace it with your subdirectory path
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?item/([0-9]+)/([a-zA-Z0-9_]+).html$ item.php?id=$1&pg=$2 [QSA,L]
Edit: Nachdem ich die .htaccess mit dem bisherigen Feedback geändert habe, bringen die umgeschriebenen URLs immer noch nicht die gewünschten Ergebnisse. Ich erhalte immer noch eine 404.