Aller au contenu

Sujets conseillés

Posté

Bonjour, je fais un site pour une compagnie de théâtre. Le fonctionnement en local etait bon du .htaccess

Voici tout le contenu du .htaccess en local, ces lignes fonctionnent parfaitement.

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^video-([a-z\-]*)-([0-9]+)\.html$ /jazz2/showvideo.php?idv=$2 [NC]
RewriteRule ^spectacle-([a-z\-]*)-([0-9]+)\.html$ /jazz2/voirspectacle.php?ids=$2 [NC]
RewriteRule ^news-([a-z\-0-9]*)-([0-9]+)\.html$ /jazz2/lirenews.php?&idn=$2 [NC]

Le site est présent dans un sous dossier jazz2 par rapport à la racine d'apache en local

Sur le serveur distant (1and1) . Le contenu du site se trouve à la racine j'ai donc remplacer par ceci :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^video-([a-z\-]*)-([0-9]+)\.html$ /showvideo.php?idv=$2 [NC]
RewriteRule ^spectacle-([a-z\-]*)-([0-9]+)\.html$ /voirspectacle.php?ids=$2 [NC]
RewriteRule ^news-([a-z\-0-9]*)-([0-9]+)\.html$ /lirenews.php?&idn=$2 [NC]

Résultat , une belle erreur 500, quelqu'un a une idée ? (j'ai essayé aussi en enlevant les / devant les pages php mais rien n'y fait.

Merci de votre aide

Posté

Salut Dan, merci pour ta réponse

J'ai enlever le Options +FollowSymlinks, mais ça ne donne rien, j'ai aussi essayer sans le Options +FollowSymlinks et sans/avec "/" devant les noms des fichiers.

Ne dois-je pas mettre le flag [L] Quelque part dans mes régles non ?

Posté

J'ai trouvé le probléme !

il venait de cette ligne :

RewriteRule ^news-([a-z\-0-9]*)-([0-9]+)\.html$ /jazz2/lirenews.php?&idn=$2 [NC]

apparement cette régle est incorrecte, pourtant elle ne me genere pas d'erreur en local...

Je voudrais autoriser tous les caractéres chiffre lettre autant majuscule que minuscule dans la premiere parenthése..

Posté

mhmm ça ne fonctionne pas :(

En fait, si mon url comence par un chiffre c'est à dire news-2007 , ça ne fonctionne pas

J'ai une fonction qui "néttoie" l'url, elle permet de transformer les " ' " en " - " et tout les caractéres spéciaux par leur équivalent accents " é " par " e " par exemple , peut être que le soucis viens de cette fonction et non pas de la réecriture ?

function cleanurl($texte)
{
$sep_mots = '-';
// Définition des caractères accentués
$car_speciaux = array( 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'È', 'É', 'Ê', 'Ë', 'è', 'é', 'ê', 'ë', 'Ì', 'Í', 'Î', 'Ï', 'ì', 'í', 'î', 'ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'Ù', 'Ú', 'Û', 'Ü', 'ù', 'ú', 'û', 'ü', 'ß', 'Ç', 'ç', 'Ð', 'ð', 'Ñ', 'ñ', 'Þ', 'þ', 'Ý' );
// ... et de leurs "équivalents" non-accentués
$car_normaux = array( 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'E', 'E', 'E', 'E', 'e', 'e', 'e', 'e', 'I', 'I', 'I', 'I', 'i', 'i', 'i', 'i', 'O', 'O', 'O', 'O', 'O', 'O', 'o', 'o', 'o', 'o', 'o', 'o', 'U', 'U', 'U', 'U', 'u', 'u', 'u', 'u', 'B', 'C', 'c', 'D', 'd', 'N', 'n', 'P', 'p', 'Y' );

// On commence par supprimer les accents
$texte = str_replace($car_speciaux, $car_normaux, $texte);

// On remplace les caractères non-alphanumériques par le séparateur $sep_mots
$texte = preg_replace( "/[^A-Za-z0-9]+/", $sep_mots, $texte );

// On supprime le séparateur s'il se trouve en début ou fin de chaîne
$texte = trim( $texte, $sep_mots );

// On convertit le tout en minuscules
$texte = strtolower( $texte );


// On retourne le résultat
return ( $texte );
}

lorsque je définie mon lien je l'appel ainsi

<a href='news-".cleanurl($lanews['titre'])."-".$lanews['idn'].".html'>".$lanews['titre']."</a>

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...