[PHP] Conflitto tra regole nel file htaccess

Ogum

Nuovo Utente
27 Mar 2018
7
1
3
Buongiorno,
ho creato queste 2 regole tramite un tool online.
Si tratta di indirizzare categorie e sub categorie in due pagine diverse.

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)\.html$ /cartella/categorie.php?id_cat=$1&n=$2 [L]
RewriteRule ^([^/]*)/([^/]*)\.html$ /cartella/lavorazioni.php?sub_cat=$1&subname=$2 [L]

Il conflitto consiste nel fatto che carica sempre la stessa pagina categorie.php
Come posso sistemare la cosa?
Grazie
 
Ciao,
grazie della risposta.
nel modo che mi hai indicato mi restituisce un errore 500
 
Prova il contrario [L, QSA]
In più una cosa che non mi convince è il punto in cui hai [^/]*
Puoi gentilmente indicare da quale link vuoi partire e come deve apparire?

Saluti G.G.
 
Ultima modifica:
Mi restituisce sempre internal server error 500

Premetto che sto lavorando in localhost WAMP

Quello che mi serve è indirizzare i link riguardanti gli ID categoria nella pagina categorie e per quanto riguarda gli ID sub categorie, nella pagina per le sub categorie

nel codice PHP della pagina ho questo:
<a href="categorie.php?id_cat=<?php echo $cat_id; ?>&n=<?php echo strtolower($name_cat); ?>"><?php echo $cat_name; ?></a>

che genera nel browser un link come questo

http://localhost/cartella/categorie.php?cat_id=1&n=pippo

stesso vale per le sub

<a href="lavorazioni?sub_cat=<?php echo $cat_id; ?>&subname=<?php echo strtolower($nome); ?>
che genera
http://localhost/cartella/lavorazioni.php?sub_cat=15&subname=pluto

con il tool mod_rewrite generator preso in rete mi definisce la regola nel modo che ho descritto sopra
 
Nel tuo modo sparirebbe il .html finale? mi da errore 404, non trova la pagina

PHP:
<a href="<?php echo WEB_ROOT . $cat_id."/".strtolower($name_cat);?>

l'url diventa

HTML:
http://localhost/cartella/8/pluto
ma non funziona
 
mi sembra stano che elimini la parte lavorazioni e categorie.
Prova questo:
Codice:
# Riscrittura url
RewriteEngine On
RewriteRule ^cartella/categorie/(.*)/(.*)\.html$ cartella/categorie.php?cat_id=$1&n=$2 [L,QSA]
RewriteRule ^cartella/lavorazioni/(.*)/(.*)\.html$ cartella/lavorazioni.php?sub_cat=$1&subname=$2 [L,QSA]

In questo modo potrai usare anche il .html
quindi dovrai digitare : http://localhost/cartella/categorie/1/pippo.html
 
Allora, riprendendo il lavoro dopo pranzo e con la testa un po' più fredda, le regole che mi hai girato...funzionano!
Non tenevo conto che l'utilizzo della costante WEB_ROOT contiene "http://localhost/cartella", quindi bastava togliere il riferimento a /cartella dalla regola.
In definitiva:
PHP:
RewriteRule ^categorie/(.*)/(.*)\.html$ cartella/categorie.php?cat_id=$1&n=$2 [L,QSA]
è quella funzionante.
Grazie per la pazienza e l'aiuto otto9due :)
 
  • Like
Reactions: otto9due

Discussioni simili