8
votes

Code hACCESS pour supprimer l'extension et ajouter + force de fin de force?

J'essaie de mettre en place un code htaccess qui va tourner exemple #filename.php dans exemple #filename / (et forte la barre oblique) - J'ai essayé des approches variables, mais chacune n'a pas encore fonctionné à droite, de 500 erreurs sur les sous-dossiers à des problèmes avec la barre oblique suivante, etc ...

aide s'il vous plaît!


4 commentaires

Vous n'avez pas mentionné les approches que vous avez essayées - quels sont vos règles actuelles de règles de réécriture (en supposant que vous utilisiez mod_rewrite)? Si vous n'utilisez pas mod_rewrite, qu'est-ce que vous utilisez?


Rewrierebase / rewriterule ^ () $ index.php [nc, l] réécritecond% {request_uri}! (^ /? Fonctionne bien pour supprimer l'extension .php des fichiers quelle que soit la profondeur de dossier. Toutefois, l'ajout d'un / des résultats dans une erreur 404 et toutes les tentatives d'intégration d'une solution de barres obliques ont provoqué des problèmes.


Acceptez une réponse s'il vous plaît, cette question est également liée à d'autres questions.


@Jono alderson alors quelle réponse est acceptée ici?


6 Réponses :


0
votes

Vous pouvez essayer de travailler sur la question ici . Bien que la solution à la question ne soit pas pertinente (encore ...) La question elle-même fournit un ensemble de règles de réécriture que vous pourrez peut-être utiliser dans votre propre site.

Si vous avez besoin de symboles dans les URL, vous pouvez simplement utiliser ". *" Au lieu du spécifique A-ZA-Z0-9, mais si vous recherchez une éventuelle barre oblique de fuite, vous voudrez peut-être utiliser ". *?". au lieu. Il s'agit d'une fonctionnalité d'expression régulière standard pour éviter la gourmande de ". *".


2 commentaires

Hmm. Cela a aidé un peu, et ça me mène maintenant à l'aide de: RewriteCond% {request_filename}! -D réécritecond% {requier_filename} \. Php -f rewriterule ^ ([^ /] +) / $ 1.Php # force une barre oblique Pour être ajouté rewriteCond% {request_filename}! -f rewriteCond% {requier_filename}! -d réécritecond% {request_uri}! (\. [A-ZA-Z0-9] {1,5} | /) Rewriterule (. * ) $ / 1 $ / 1 / [r = 301, l] Cela fonctionne parfaitement (bandes .php. Et force une barre oblique de fuite), sauf dans un sous-répertoire, quand il donne une erreur 404 :(


! (\. [a-za-z0-9] {1,5} | /) $ devrait probablement être! (((a-za-z0-9] /?) +) $. Si je ne me trompe pas, cela correspondra à tous les caractères alphanumériques suivis d'un (facultatif) "/", et correspond à une ou plusieurs fois.



2
votes
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
Works like a charm - thanks for the help folks.

0 commentaires

13
votes

Essayez ceci: xxx

La première règle redirige les demandes de / foo / bar .php . Extérieurement à / foo / bar / . Et la deuxième règle réécrit les demandes de / foo / bar / à l'intérieur de / foo / bar < /EM>.Php. Et pour forcer la barre oblique, essayez cette règle: xxx


0 commentaires

6
votes

Cette solution de Gumbo fonctionne bien pour les fichiers, mais cela ne fonctionne pas avec des répertoires. En d'autres termes:

pour mysite.com/file1.php code>, il affiche mysite.com/file1 / code> qui est génial. Pourtant, cela ne fonctionne pas bien pour les annuaires. Si j'essaie d'accéder au répertoire suivant (contenant index.php Fichier Inside) mySite.com/dir1 code>, au lieu de montrer le contenu du http: /mysite.com/dir1/index.com/dir1/index .php code> et l'URL: mysite.com/dir1 / code>, il renvoie 404. p>

Ma solution autour de lui était: P>

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]


RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ $1.php [L]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .*[^/]$ $0/ [L,R=301]


1 commentaires

Ce n'est pas une réponse à la question Jono Alderson. S'il vous plaît ouvrir une nouvelle question.



0
votes

pour le chemin que vous pouvez ajouter sur vos pages PHP.


0 commentaires

0
votes

Essayez ceci, celui-ci fonctionne sur mon Apache, même lorsque vous supprimez le manuel de la dernière barre oblique:

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]


0 commentaires