Problema con file .htaccess

Stato
Discussione chiusa ad ulteriori risposte.

Zed92

Utente Silver
3 Febbraio 2008
2
2
0
59
Salve ragazzi su un mio sito web ho un problema con un file .htaccess

Ecco il codice:
Codice:
RewriteEngine On
RewriteRule ^(.+)-in-streaming-su-megavideo-(\d+).html$ visualizza.php?id=$2
RewriteRule ^(.+)-serie-in-streaming-su-megavideo-(\d+).html$ visualizza-serie.php?id=$2
RewriteRule ^sitemap.xml ./sitemap.php [L,QSA]
ErrorDocument 404 /404.php

Il problema è che questo file riscrivere solo gli url per la 2 stringa.
Però la sintassi della 3 riga è giusta perchè se provo a togliere la 2 stringa la 3 mi funge benissimo.

Non ho idea di come risolvere, aspetto una vostra risposta.
 
Provato, non è cambiato nulla.

Edit:
Il problema è che com'è adesso ne funziona solo uno.

Devo trovare il modo che funzionano tutti e due :S
 
nella prima regexp hai scritto
RewriteRule ^(.+)-in-streaming-su-megavideo-(\d+).html$ visualizza.php?id=$2

occhio a quel (.+) all'inizio, la seconda regexp rientra nella prima! invertile

la sitemap prova a slashare il punti (\.) e prova chiudendola con $
 
Zed92 ha detto:
Salve ragazzi su un mio sito web ho un problema con un file .htaccess

Ecco il codice:
Codice:
RewriteEngine On
RewriteRule ^(.+)-in-streaming-su-megavideo-(\d+).html$ visualizza.php?id=$2
RewriteRule ^(.+)-serie-in-streaming-su-megavideo-(\d+).html$ visualizza-serie.php?id=$2
RewriteRule ^sitemap.xml ./sitemap.php [L,QSA]
ErrorDocument 404 /404.php

Il problema è che questo file riscrivere solo gli url per la 2 stringa.
Però la sintassi della 3 riga è giusta perchè se provo a togliere la 2 stringa la 3 mi funge benissimo.

Non ho idea di come risolvere, aspetto una vostra risposta.

Il problema è che questo file riscrivere solo gli url per la 2 stringa.
non capisco cosa tu voglia intendere

potresti provare così
Codice:
RewriteEngine On
RewriteBase /
RewriteRule ^(.+)-in-streaming-su-megavideo-(\d+).html$ visualizza.php?id=$2 [L]
RewriteRule ^(.+)-serie-in-streaming-su-megavideo-(\d+).html$ visualizza-serie.php?id=$2 [L]
RewriteRule ^sitemap.xml sitemap.php [L]
ErrorDocument 404 /404.php

spiegati meglio
 
Scusate ma di htaccess non ne so nulla.

Comunque adesso mi spiego meglio.

Dovrei far generare al htaccess degli url per ogni &id presente nel database.

Questo il file htaccess gia lo faceva prima che aggiungessi io la stringa:
Codice:
RewriteRule ^(.+)-serie-in-streaming-su-megavideo-(\d+).html$ visualizza-serie.php?id=$2

Ma com'è adesso non funziona in quanto mi funziona solo la stringa:
Codice:
RewriteRule ^(.+)-in-streaming-su-megavideo-(\d+).html$ visualizza.php?id=$2

Una cosa che ho notato è che se provo a togliere 1 delle 2 stringhe quella che resta funge alla perfezione.

Adesso provo con il codice modificato da narcycs e vi faccio sapere.

GreyFox ha detto:
nella prima regexp hai scritto
RewriteRule ^(.+)-in-streaming-su-megavideo-(\d+).html$ visualizza.php?id=$2

occhio a quel (.+) all'inizio, la seconda regexp rientra nella prima! invertile

la sitemap prova a slashare il punti (\.) e prova chiudendola con $

Grazie a Greyfox ho risolto invertendo le stringhe.

Quindi è diventato cosi:
Codice:
RewriteEngine On
RewriteRule ^(.+)-serie-in-streaming-su-megavideo-(\d+).html$ visualizza-serie.php?id=$2
RewriteRule ^(.+)-in-streaming-su-megavideo-(\d+).html$ visualizza.php?id=$2
RewriteRule ^sitemap.xml ./sitemap.php [L,QSA]
ErrorDocument 404 /404.php

Ma non ho capito l'errore dov'era :S
 
l'errore stava nelle regexp...mi spiego

apache legge in ordine le rewriterule, nel tuo caso ad ogni richiesta prima controllava se l'url corrispondeva a
^(.+)-in-streaming-su-megavideo-(\d+).html$

e poi a:
^(.+)-serie-in-streaming-su-megavideo-(\d+).html$

la parentesi (.+) significa ogni carattere prima di -in-streaming.... quindi anche "-serie" veniva matchata con la prima regexp e non con la seconda in quanto (.+) corrisponde anche a "-serie" . in altre parole se scrivevi pazzo-in-streaming... o serie-in-streaming... èera la stessa cosa, sempre (.+)-in-streaming-...
invertendole invece controlla prima che sia (.+)-serie-in-streaming ...
 
Ottimo, adesso ho capito anche il perchè non andava :)

Grazie mille, ho dato un +1 all'amico narcycs, domani ne do uno anche a te ;)
 
Ragazzi ho un problemone..

Ho appena cambiato hosting e mi sono reso conto che il file .htaccess sul nuovo hosting non funge :S

Non rescrive piu gli url per le stringhe dei file "visualizza.php" e "visualizza-serie.php", mentre gli url dei rss e della sitemap vengono rescritti.

Ecco il codice:
Codice:
RewriteEngine On
RewriteRule ^(.+)-serie-in-streaming-su-megavideo-(\d+).html$ visualizza-serie.php?id=$2
RewriteRule ^(.+)-in-streaming-su-megavideo-(\d+).html$ visualizza.php?id=$2
RewriteRule ^sitemap.xml ./sitemap.php [L,QSA]
ErrorDocument 404 /404.php

Praticamente le stringhe che non funzionano piu sono:
Codice:
RewriteRule ^(.+)-serie-in-streaming-su-megavideo-(\d+).html$ visualizza-serie.php?id=$2
RewriteRule ^(.+)-in-streaming-su-megavideo-(\d+).html$ visualizza.php?id=$2

Idee? :S

edit:
ecco info dell'hosting
Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_qos/7.4 mod_qos_control/7.4 PHP/5.2.10

Per me il problema giace nelle variabili che utilizzano quelle due stringhe.

Sono nelle vostre mani. :(
 
Stato
Discussione chiusa ad ulteriori risposte.