Je conçois un site web. Je veux que l'adresse de mon site ressemble à l'image suivante:
Je ne souhaite pas que mon site Web ressemble à http://something.com/profile.php Je souhaite que l'extension .php
soit supprimée de la barre d'adresse à l'ouverture du site par quelqu'un En d'autres termes, je veux que mon site ressemble à: http://something.com/profile
Dans un deuxième exemple, vous pouvez consulter l'adresse du site Web StackOverflow.
Quelqu'un peut-il m'aider s'il vous plaît à faire cela? Merci!
Ajoutez simplement le fichier .htaccess au dossier racine de votre site (par exemple, /home/domains/domain.com/htdocs/) avec le contenu suivant:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Tout d’abord, vérifiez que le module mod_rewrite est installé. Ensuite, veillez à comprendre comment cela fonctionne, beaucoup de gens l’obtiennent à l’arrière.
Vous ne cachez pas les URL ou les extensions. Ce que vous faites est de créer une nouvelle URL qui dirige vers l'ancienne, par exemple
L’URL à mettre sur votre site Web sera yoursite.com/play?m=asdf.
ou mieux encore
yoursite.com/asdf
Même si le répertoire asdf n'existe pas. Ensuite, avec mod_rewrite installé, vous mettez ceci dans .htaccess. En gros, si l’URL demandée n’est ni un fichier ni un répertoire, dirigez-le vers mon script:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /play.php [L]
Vous avez presque terminé - il ne vous reste plus qu'à écrire des éléments dans votre script PHP pour analyser la nouvelle URL. Vous voulez faire cela pour que les ANCIENS fonctionnent aussi - vous maintenez un système dans lequel la variable est toujours exactement la mêmeOUcréez une table de base de données qui corrèle "l'URL conviviale pour le référencement" avec le produit id. Un exemple pourrait être
/ Some-Cool-Video (qui correspond à l'ID du produit asdf)
L'avantage de cela? Les moteurs de recherche indexeront les mots clés "Some Cool Video". asdf? Qui va chercher ça?
Je ne peux pas vous donner de détails sur la façon de programmer ceci, mais prenez la chaîne de requête, enlevez la fin
yoursite.com/Some-Cool-Video
se transforme en "asdf"
Puis définissez la variable m sur cette
m = asdf
Donc, les deux URL iront toujours au même produit
yoursite.com/play.php?m=asdf
yoursite.com/Some-Cool-Video
mod_rewrite peut aussi faire beaucoup d'autres choses importantes, comme Google et l'activer sur votre serveur (il est probablement déjà installé).
Vous avez différents choix . L'un d'eux crée un dossier nommé "profil" et renommez votre "profil.php" en "default.php" et le place dans le dossier "profil" . à cette page de cette façon:
Ancienne page: http://something.com/profile.php?id=a&abc=1
Nouvelle page: http://something.com/profile/?id=a&abc=1
Si vous n'êtes pas satisfait, laissez un commentaire pour les méthodes compliquées.
Le problème avec la création d’un répertoire et le maintien du fichier index.php est que
Les solutions sont 1. MOD REWRITE (comme suggéré ci-dessus) 2. utilisez un code php pour inclure dynamiquement d'autres fichiers dans le fichier d'index. Lisez-en un peu plus ici http://inobscuro.com/tutorials/read/16/
Voici un moyen simple PHP que j'utilise.
Si une page est demandée avec l'extension .php, une nouvelle requête est effectuée sans l'extension .php. L'extension .php n'est alors plus affichée dans le champ d'adresse du navigateur.
J'ai proposé cette solution car aucune des nombreuses suggestions .htaccess ne fonctionnait pour moi et il a été plus rapide de l'implémenter dans PHP que d'essayer de comprendre pourquoi le .htaccess ne fonctionnait pas sur mon serveur.
Placez ceci au début de chaque fichier PHP (de préférence avant toute autre chose):
include_once('scripts.php');
strip_php_extension();
Ensuite, mettez ces fonctions dans le fichier 'scripts.php':
//==== Strip .php extension from requested URI
function strip_php_extension()
{
$uri = $_SERVER['REQUEST_URI'];
$ext = substr(strrchr($uri, '.'), 1);
if ($ext == 'php')
{
$url = substr($uri, 0, strrpos($uri, '.'));
redirect($url);
}
}
//==== Redirect. Try PHP header redirect, then Java, then http redirect
function redirect($url)
{
if (!headers_sent())
{
/* If headers not yet sent => do php redirect */
header('Location: '.$url);
exit;
}
else
{
/* If headers already sent => do javaScript redirect */
echo '<script type="text/javascript">';
echo 'window.location.href="'.$url.'";';
echo '</script>';
/* If javaScript is disabled => do html redirect */
echo '<noscript>';
echo '<meta http-equiv="refresh" content="0; url='.$url.'" />';
echo '</noscript>';
exit;
}
}
Il est évident que vous devez toujours configurer Apache pour rediriger toute demande sans extension vers le fichier portant l'extension . La solution ci-dessus vérifie simplement si l'URI demandé possède une extension, s'il le fait, mais demande l'URI sans l'extension. Apache effectue ensuite la redirection vers le fichier portant l'extension, mais seul l'URI demandé (sans l'extension) apparaît dans le champ d'adresse du navigateur . L'avantage est que tous vos liens "href" dans votre code peuvent toujours avoir la nom de fichier complet, c'est-à-dire y compris l'extension .php.
Tony, ton script est ok, mais si tu as 100 fichiers? Besoin d'ajouter ce code dans tous ces:
include_once ('scripts.php');
strip_php_extension ();
Je pense que vous incluez un menu dans chaque fichier php (votre menu est probablement affiché dans toutes vos pages Web), vous pouvez donc ajouter ces 2 lignes de code uniquement dans votre fichier de menu. Ce travail pour moi: D
Supprimer une extension de fichier via .htaccess
URL d'origine: http://ravinderrathore.herobo.com/contact.php
règle htaccess pour supprimer l’extension de fichier .php, .html etc. de l’URL.
RewriteRule ^(.*)$ $1.php
After Rewriting: http://ravinderrathore.herobo.com/contact
RewriteEngine on
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^index(.*)?$ index.php$1 [L,QSA]
RewriteRule ^login_success(/)?$ login_success.php [L,QSA]
RewriteRule ^contact(/)?$ contact.php [L,QSA]
comme Igor mais devrait fonctionner sans la ligne 2:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
En fait, le moyen le plus simple de manipuler ceci est de
Ensuite, l'URL www.votresite.com/data lira ce fichier index.php. Si vous voulez aller plus loin, ouvrez un sous-dossier (par exemple, "Liste"), insérez un autre index.php dans ce dossier et www.yoursite.com/data/list pourra exécuter ce fichier PHP.
De cette façon, vous pouvez avoir un contrôle total sur cela, très utile pour le référencement.
à peu près la même chose avec la première réponse à propos de, mais un avantage supplémentaire.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Ajoutez simplement si vous avez une autre extension de fichier dans vos sites