it-swarm.com.de

Wie ändere ich meine ID und meinen Namen in der PHP-URL?

Wie würde ich die URL von ändern?

von: example.com/games.php?id=27

an: website.com/games/271/game-name-here

Bisher habe ich dies in .htaccess:

RewriteEngine on
RewriteRule ^games/([0-9]+)/?$ games.php?id=$1 [NC,L]
RewriteRule ^(.*).aspx$ $1.php
RewriteRule ^(.*).ashx$ $1.php
Options -Indexes
<Files 403.shtml>
order allow,deny
allow from all
</Files>

RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]

Options -Multiviews
1
slixxed

Soweit ich weiß, möchten Sie, dass Anfragen für die folgende URL website.com/games/271/game-name-here von games.php bearbeitet werden

Hierfür können Sie eine einfachere Regel verwenden.

RewriteRule ^games/(.*)$ /games.php?var=$1 [L]

Dadurch werden alle Anfragen mit/games/an games.php gesendet. Für z.B.

/games/271/game-name-here wird so gehen /games.php?var=271/game-name-here

Jetzt ist game-name-here nur für SEO-Zwecke, da Sie tatsächlich nur die ID benötigen. Filtern Sie also den ID-Teil wie folgt aus der Variable:

$value=($_GET['var']);
$temp = explode('/',$value);
$id = $temp[0];

Denken Sie daran, dass htaccess nur zur Bearbeitung der URL-Anforderungen verwendet wird. Sie müssen weiterhin die richtigen URLs auf Ihren Webseiten erstellen.

Zusätzlicher Tipp: Möglicherweise berücksichtigen Sie auch die folgende URL-Struktur website.com/games/271-game-name-here. Hier explodieren Sie einfach die URL in einem Bindestrich "-" anstelle von "/".

1
Aakash

Grundsätzlich müssen Sie zwei Dinge tun:

  1. .htaccess, um die URL zu dekodieren und an abc.php zu senden
  2. Sie müssen die Datei ändern, die die URL erstellt. Wenn die Seite, die auf abc.php?vid=55 verweist, index.php ist, müssen Sie Ihren Code in index.php ändern.

Zum Beispiel:

altes Programm

$query = "SELECT id,title FROM vid_table";
$result = mysql_query($query);

while ($data = mysql_fetch_array($result))
{
    echo '<a href="abc.php?vid=' . $data['id'] . '">' . $data['title'] . '</a>';
}

neues Programm

while ($data = mysql_fetch_array($result))
{
    echo '<a href="abc.php/vid/' . str_replace(" ", "-", $data['title']) . ">' . $data['title'] . '</a>';
}

In abc.php müssen Sie die Art und Weise ändern, wie das Programm aus der Datenbank liest

/* this means that the page get redirected from .htaccess */
if (isset($_SERVER['REDIRECT_URL'])) 
{
    $parts = explode('/', $_SERVER['REDIRECT_URL']);

    array_shift($parts);

    $url_name = $parts[1];
    $url_name = str_replace("-", " ", $url_name);
    $query = "SELECT id FROM vid_table WHERE title = '$url_name'";
    $result = mysql_query($query);
    $data = mysql_fetch_array($result);
    $_GET['id'] = $data['id'];
}

Dann können Sie mit Ihrem Programm fortfahren und mit dem zweiten Schritt und dem Umschreiben der URL fortfahren.

Mehr Informationen:
http://www.smashingmagazine.com/2011/11/introduction-to-url-rewriting/

Ich hoffe es ist nicht zu verwirrend.

0
user55526