J'essaie de mettre en place un code htaccess qui va tourner exemple #filename.php strong> dans exemple #filename / strong> (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 ... p>
aide s'il vous plaît! p>
6 Réponses :
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. P>
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 ". *". P>
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.
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.
Essayez ceci: La première règle redirige les demandes de / foo / bar code> em>
.php code>. Extérieurement à
/ foo / bar code> em>
/ code>. Et la deuxième règle réécrit les demandes de
/ foo / bar code> em>
/ code> à l'intérieur de
/ foo / bar code> < /EM>
.Php
. Et pour forcer la barre oblique, essayez cette règle: p>
Cette solution de Gumbo fonctionne bien pour les fichiers, mais cela ne fonctionne pas avec des répertoires. En d'autres termes:
pour Ma solution autour de lui était: P> 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>
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]
Ce n'est pas une réponse à la question Jono Alderson. S'il vous plaît ouvrir une nouvelle question.
pour le chemin que vous pouvez ajouter
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]
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?