web-dev-qa-db-fra.com

Comment changer mon identifiant et mon nom en php url

Comment changer l'URL de

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

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

Jusqu'ici j'ai ceci dans .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

Si je comprends bien, vous souhaitez que les demandes concernant l’URL suivante website.com/games/271/game-name-here soient gérées par games.php

Pour cela, vous pouvez utiliser une règle plus simple.

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

Cela enverra toutes les demandes avec/games/à games.php. Par exemple.

/games/271/game-name-here ira comme ceci /games.php?var=271/game-name-here

Maintenant, game-name-here est uniquement destiné au référencement, car ce dont vous avez réellement besoin n’est que l’identifiant. Donc, filtrez la partie id de la var comme ceci -

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

Rappelez-vous que htaccess est utilisé uniquement pour traiter les demandes d'URL. Vous devez toujours former les URL correctes dans vos pages Web.

Conseil supplémentaire: Vous pouvez également envisager la structure d’URL suivante website.com/games/271-game-name-here. Ici, il suffit d'exploser l'URL sur un trait d'union '-' au lieu de '/'

1
Aakash

Fondamentalement, vous devez faire deux choses:

  1. .htaccess pour décoder l'URL et l'envoyer à abc.php
  2. Vous devez changer le fichier qui crée l'URL. Si la page qui fait référence à abc.php?vid=55 est index.php, vous devez modifier votre code dans index.php.

Par exemple:

ancien programme

$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>';
}

nouveau programme

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

Dans abc.php, vous devez modifier la façon dont le programme est lu dans la base de données.

/* 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'];
}

Ensuite, vous pouvez continuer avec votre programme et aller à la deuxième étape et à la réécriture des URL.

Plus d'information:
http://www.smashingmagazine.com/2011/11/introduction-to-url-rewriting/

J'espère que ce n'est pas trop déroutant.

0
user55526