Oui, j'ai lu le manuel Apache et cherché ici. Pour une raison quelconque, je ne peux tout simplement pas faire fonctionner cela. Le plus proche que je suis venu est de lui faire supprimer l'extension, mais cela pointe vers le répertoire racine. Je veux que cela fonctionne uniquement dans le répertoire qui contient le .htaccess
fichier.
Je dois faire trois choses avec le .htaccess
fichier.
J'en ai besoin pour supprimer le .php
une. J'ai plusieurs pages qui utilisent des onglets et l' URL ressemble à page.php # tab - est-ce possible?
b. J'ai une page qui utilise un identifiant de session ajouté à l'URL pour m'assurer que vous venez du bon endroit
www.domain.com/download-software.php?abcdefg
,.
Est-ce possible? Aussi, pour ce faire, dois-je supprimer ".php" des liens dans mon fichier d'inclusion de navigation d'en-tête? DevraitIE "<a href="support.php">support</a>" be <a href="support">support</a>?
- Je voudrais qu'il force "www" avant chaque URL, donc ce n'est pas
domain.com
, maiswww.domain.com/page
. - Je voudrais supprimer toutes les barres obliques de fin des pages.
Je vais continuer à chercher, essayer, etc. Est-ce que le fait d'être dans un sous-répertoire poserait des problèmes?
Réponses:
La réponse de Gumbo à la question Stack Overflow Comment masquer l'extension .html avec Apache mod_rewrite devrait fonctionner correctement.
Re 1) Changez le .html en .php
Re a.) Oui, c'est possible, ajoutez simplement
#tab
à l'URL.Re b.) C'est possible en utilisant
QSA
(Query String Append), voir ci-dessous.Cela devrait également fonctionner dans un chemin de sous-répertoire:
la source
[L,
lesQSA]
indicateurs d' espace , sinon une erreur de serveur interne 500 provoquera./index/bla/bla
le même queindex.php
Apache mod_rewrite
Ce que vous recherchez est mod_rewrite ,
De manière générale,
mod_rewrite
fonctionne en faisant correspondre le document demandé avec des expressions régulières spécifiées, puis effectue des réécritures d'URL en interne (dans le processus apache) ou en externe (dans le navigateur du client). Ces réécritures peuvent être aussi simples que la traduction interne de example.com/foo en une requête par exemple.com/foo/bar.La documentation Apache comprend un
mod_rewrite
guide et je pense que certaines des choses que vous voulez faire y sont couvertes. Guide mod_rewrite détaillé .Forcer le
www
sous - domaineLe guide de réécriture comprend des instructions pour cela sous l' exemple de nom d' hôte canonique .
Supprimer les barres obliques (partie 1)
Je ne sais pas pourquoi vous voudriez faire cela car le guide de réécriture comprend un exemple pour l'exact opposé , c'est-à-dire, toujours avec une barre oblique de fin. La documentation suggère que la suppression de la barre oblique de fin a un grand potentiel de causer des problèmes:
Peut-être pourriez-vous expliquer pourquoi vous souhaitez supprimer la barre oblique de fin tout le temps?
Supprimer l'
.php
extensionLa chose la plus proche de faire cela à laquelle je puisse penser est de réécrire en interne chaque document de demande avec une extension .php, c'est-à-dire que example.com/somepage est plutôt traité comme une demande pour example.com/somepage.php. Notez que procéder de cette manière exigerait que chaque page existe réellement en tant que somepage.php sur le système de fichiers.
Avec la bonne combinaison d'expressions régulières, cela devrait être possible dans une certaine mesure. Cependant, je peux prévoir certains problèmes possibles avec les pages d'index qui ne sont pas demandées correctement et ne correspondent pas correctement aux répertoires.
Par exemple, cela réécrira correctement example.com/test en tant que requête pour example.com/test.php:
Mais cela fera échouer le chargement de example.com car il n'y a pas d'exemple.com/.php
Je vais deviner que si vous supprimez toutes les barres obliques de fin, alors choisir une demande d'index de répertoire à partir d'une demande de nom de fichier dans le répertoire parent deviendra presque impossible. Comment déterminer une demande pour le répertoire 'foobar':
à partir d'une requête pour un fichier appelé foobar (qui est en fait foobar.php)
Cela pourrait être possible si vous utilisiez la
RewriteBase
directive. Mais si vous faites cela, ce problème devient beaucoup plus compliqué car vous allez avoir besoin deRewriteCond
directives pour vérifier au niveau du système de fichiers si la demande correspond à un répertoire ou à un fichier.Cela dit, si vous supprimez votre obligation de supprimer toutes les barres obliques de fin et que vous forcez à la place d'ajouter des barres obliques de fin, le problème «sans extension .php» devient un peu plus raisonnable.
Ce n'est toujours pas parfait - chaque demande de fichier a toujours .php ajouté à la demande en interne. Une demande de 'hi.txt' placera ceci dans vos journaux d'erreurs:
Mais il existe une autre option, définissez les directives
DefaultType
etDirectoryIndex
comme ceci:Mise à jour 2013-11-14 - Correction de l'extrait ci-dessus pour incorporer l'observation de Nicorellius
Désormais, les requêtes pour hi.txt (et toute autre chose) réussissent, les requêtes adressées à example.com/test renverront la version traitée de test.php et les fichiers index.php fonctionneront à nouveau.
Je dois donner le crédit où le crédit est dû pour cette solution car je l'ai trouvée Michael J. Radwins Blog en recherchant Google pour php sans extension apache .
Supprimer les barres obliques de fin
Certaines recherches
apache remove trailing slashes
m'ont amené à certaines pages d'optimisation des moteurs de recherche. Apparemment, certains systèmes de gestion de contenu (Drupal dans ce cas) rendront le contenu disponible avec et sans barre oblique finale dans URls, ce qui dans le monde du référencement entraînera une pénalité de contenu en double pour votre site. La sourceLa solution semble assez triviale, en utilisant
mod_rewrite
on réécrit à condition que la ressource demandée se termine par un/
et réécrive l'URL en renvoyant l'301 Permanent Redirect
en-tête HTTP.Voici son exemple qui suppose que votre domaine est blamcast.net et permet à la requête d'être éventuellement préfixée avec
www.
.Maintenant, nous arrivons quelque part. Permet de tout mettre ensemble et de voir à quoi il ressemble.
Obligatoire
www.
, non.php
et pas de barres obliques de finCela suppose que le domaine est foobar.com et qu'il fonctionne sur le port standard 80.
L'indicateur 'R' est décrit dans la
RewriteRule
section directive. Fragment:Note finale
Je n'ai pas réussi à faire fonctionner la suppression de la barre oblique. La redirection a fini par me donner des boucles de redirection infinies. Après avoir lu de plus près la solution originale, j'ai l'impression que l'exemple ci-dessus fonctionne pour eux en raison de la configuration de leur installation Drupal. Il mentionne spécifiquement:
En référence aux URL se terminant par et sans barre oblique. En outre,
la source
DirectoryIndex index index.html
? ouDirectoryIndex index.php index.html
?En plus des autres réponses ci-dessus,
Vous pouvez également essayer ceci pour supprimer complètement les extensions .php de votre fichier et pour éviter une boucle infinie :
Ce code fonctionnera dans Root / .htaccess, assurez-vous de changer le RewriteBase si vous souhaitez le placer dans un fichier htaccess dans le sous-répertoire.
Éditer :
Sur Apache 2.4 et versions ultérieures, vous pouvez également utiliser l'indicateur END pour éviter une erreur de boucle infinie. L'exemple suivant fonctionne de la même manière que ci-dessus sur apache 2.4,
la source
Le code suivant fonctionne bien pour moi:
la source
Voici une méthode si vous souhaitez le faire pour un seul fichier spécifique:
Réf: http://css-tricks.com/snippets/htaccess/remove-file-extention-from-urls/
la source
Après avoir changé le paramètre
AllowOverride
deNone
àAll
in/etc/apache2/apache2.conf
(Debian 8), après cela , le fichier .htaccess doit juste contenir:Et il suffisait de cacher l'extension .php des fichiers
la source
MultiViews
cela est-il<a href="somepage.php">
lien</a>
en<a href="somepage">
lien</a>
dans le code sourceEssayez ceci
Le code suivant fonctionnera certainement
la source
Je ne sais pas pourquoi les autres réponses n'ont pas fonctionné pour moi, mais ce code que j'ai trouvé a fonctionné:
C'est tout ce qui est dans mon htaccess et example.com/page montre example.com/page.php
la source
Pour supprimer l'extension .php d'un fichier PHP, par exemple yoursite.com/about.php vers yoursite.com/about Suivez ces étapes. Ouvrez le fichier .htaccess (créez-en un s'il n'existe pas) à partir de la racine de votre site Web et ajoutez le code suivant.
Pour supprimer l'extension .html d'un fichier html, par exemple yoursite.com/about.html vers yoursite.com/about Suivez ces étapes.
Ouvrez le fichier .htaccess (créez-en un s'il n'existe pas) à partir de la racine de votre site Web et ajoutez le code suivant.
Référence: Comment supprimer l'extension php de l'URL
la source
Si vous codez en PHP et que vous souhaitez supprimer .php, vous pouvez avoir une URL comme:
http://yourdomain.com/blah -> qui pointe vers /blah.php
C'est tout ce dont vous avez besoin:
la source
J'ai trouvé un concept fonctionnel à 100% pour moi:
Utilisez ce code dans la racine du fichier .htaccess de votre site Web comme:
hors ligne - wamp \ www \ YourWebDir
en ligne - public_html /
la source
RewriteRule
s avec l'étiquetteL
côte à côte.[L]
indiquemod_rewrite
que c'est la dernière règle pour le spécifiéRewriteCond
.Voici le code que j'ai utilisé pour masquer l'
.php
extension du nom de fichier:Remarque:
R=301
est pour une redirection permanente et il est recommandé de l'utiliser à des fins de référencement. Cependant, si vous ne voulez qu'une redirection temporaire, remplacez-la parR
la source
J'ai fini avec le code de travail suivant:
la source
Si votre URL en PHP comme http://votredomaine.com/demo.php vient comme http://votredomaine.com/demo
C'est tout ce dont vous avez besoin:
créer un fichier .htaccess
la source
http://example.com/myfile
mais cela n'a pas fonctionné pourhttp://example.com/myfolder/
(fichier d'index). Pouvez-vous m'aider à le faire fonctionner pour le fichier d'index?Essayer
la source