2010-06-11 8 views
1

Ceci est pour les pages HTML/PHP de base, pas de chaînes de requête, etc. J'ai cherché haut et bas et trouver des ressources pour supprimer le 'index.php' de l'URI, ou en supprimant '.php' et d'autres extensions de fichiers .. et même en ajoutant une barre oblique. Mais, chaque fois que j'essaie de les utiliser tous, ou d'utiliser des exemples que j'ai trouvés, j'obtiens une erreur de 500 serveurs.htaccess supprimer .php extension, index.php ET ajouter slash de fin

je passe une chaîne de requête sur une page, mais vraiment je veux juste enlever « index.php » de la page d'index et ont toutes les sous-pages sans l'extension du fichier. Donc, quelque chose comme ceci:

domain.com/index.php à domain.com/~~V~~singular~~3rd domain.com/page1.php à domain.com/page1/ domain.com/page2.php à domain.com/ Tous les exemples que je peux trouver sont axés sur les CMS, etc .. avec des chaînes de requête, etc. rien ne se concentrant sur l'URI de base, page2/ domain.com/page3.php à domain.com/page3/ ce que je pense pourrait être ce qui causait les erreurs que je recevais.

Toute aide est appréciée !! Merci

Répondre

5

Je l'ai eu d'un gars plutôt utile sur un forum une fois - jamais complètement compris, et il y a une mise en garde; cela implique non barre oblique à moins que la demande ne soit un répertoire.

Cependant, je pensais que cela valait la peine de poster - un gourou là-bas peut facilement repérer le correctif !?

# remove .php; use THE_REQUEST to prevent infinite loops 
RewriteCond %{HTTP_HOST} ^www\.domain\.com 
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP 
RewriteRule (.*)\.php$ $1 [R=301] 

# remove index 
RewriteRule (.*)index$ $1 [R=301] 

# remove slash if not directory 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} /$ 
RewriteRule (.*)/ $1 [R=301] 

# add .php to access file, but don't redirect 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule (.*) $1\.php [L] 
+0

Merci! Je vais essayer et voir ce que nous pouvons comprendre ... tous les gourous se soucient d'ajouter/d'ajuster cela pour inclure une barre oblique à toutes les demandes? – revive

+0

FINALEMENT, une réponse qui fonctionne. J'ai cherché haut et bas. Une note, j'ai dû ajouter "RewriteBase /" au début parce que mes fichiers sont imbriqués dans d'autres dossiers qui vont au-dessous du domaine, et il les acheminait vers des niveaux inférieurs, qui apparaissaient dans l'URL. = pas bon. –

0

Vous pouvez essayer ceci dans votre fichier htaccess:

Options +MultiViews 

Mais cela dépend de wheter il est activé par votre serveur Web. Notez également que les fichiers htaccess sont spécifiques aux serveurs Web Apache. Par conséquent, cela ne fonctionnera pas si vous utilisez autre chose.

+0

Connaissez-vous toujours quelqu'un qui n'utilise pas Apache? :) –

+0

@Marco Demaio: en fait ... J'utilise principalement Nginx ces jours-ci. Apache a quelques avantages mais généralement vous n'avez pas besoin de toutes ces fonctionnalités. – Wolph

Questions connexes