Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,128

    Creare URL come Wordpress senza creare le cartelle

    Salve, volevo chiedervi quali sono i metodi per creare un sistema di URL che non abbiano il nome del file e quindi anche l'estensione.
    So che basterebbe creare la cartella e mettere un index all'interno, ma è proprio questo che non vorrei fare.

    Ci sono dei metodi? Ad esempio come fa Wordpress per gli articoli? Il titolo dell'articolo risulta come se fosse una cartella quindi con slash (/) finale.

    Wordpress quando creiamo un nuovo articolo in database, crea un url (tra le varie) www.miosito/articoli/TITOLODELL'ARTICOLO/ e questo lo fa senza creare alcuna cartella dell'articolo stesso.. o mi sbaglio?!

    Grazie ancora e buone feste!

  2. #2

  3. #3
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,128
    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    Usa delle rewrite rule di mod_rewrite nell'.htaccess
    Intendi questo?
    Codice PHP:
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule 
    .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond 
    %{REQUEST_FILENAME} !-d
    RewriteRule 
    . /index.php [L]
    </
    IfModule
    Potreste fare degli esempi o spiegare il codice se è giusto?
    Come è possibile che nell'url compaia www.miosito.it/category/news/titolonews e le cartelle category e news, ne tantomeno titolonews sono presenti in ftp?!

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,133
    htaccess è un argomento server, sposto.
    Earth2: 3QCNSPFQUH

  5. #5
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,128
    Mi pare di capire, anche vedendo un pò in giro, che non è possibile modificare una pagina www.miosito.it/news.php in www.miosito.it/news/ senza che vi sia una cartella "news"?!

    Vi spiego in pratica cosa vorrei fare:
    Ho un sito che all'interno della root ha tutte pagine.php, quindi ad esempio chi-siamo.php, cosa-facciamo.php, contatti.php ebbene vorrei semplicemente cambiare il link e creare /chi-siamo/ o /cosa-facciamo/ etc.
    Naturalmente se un utente immette entrambi gli indirizzi (sia chi-siamo.php, sia /chi-siamo) questi dovrebbero portare nella medesima pagina senza dare spiacevoli sorprese!

    Anche voi pensate che tutto questo non sia possibile? O sono il solito tapino?!!

  6. #6
    E' possibile usando una RewriteRule in un file .htaccess. Qui trovi la documentazione ufficiale:

    https://httpd.apache.org/docs/2.4/rewrite/flags.html

    Cercando con Google si trovano centinaia di esempi al riguardo.

  7. #7
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,128
    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    E' possibile usando una RewriteRule in un file .htaccess.
    Questo l'ho capito, ed ho provato e riprovato non riuscendo ad arrivare a nulla se non a fare diversi casini!

    Ho fatto prove molto prima di scrivere qui, ma non sono riuscito nel mio intento. Se posso chiederlo vi chiederei un esempio che funzioni..! Purtroppo ottengo sempre pagina non trovata etc.
    Ad esempio, devo inserire [R] cioè reindirizzamento oppure no?
    So fare un pò di php e html purtroppo non conosco bene cosa può fare .htaccess!

    Grazie ancora!

    ps. Ripeto quello che non capisco è come fargli leggere una pagina che non esiste. Non so se fare reindirizzamento; non so se in effetti come è possibile, difatto penso che non lo sia perchè ci ho provato abbastanza!
    Ultima modifica di Igreo; 12-01-2021 a 02:53

  8. #8
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,128
    Dunque ho fatto un pò di prove e ricerche ma ho diversi problemi.

    Parto dalla prova che sto facendo, per capire come funziona. Naturalmente quello che mi interessa è l'ultimo Rewrite, che dovrebbe rewritare 3 profondità di cartelle, tutti i file .php con o senza le variabili, il tutto sempre allo stesso link che dovrebbe riportare nella variabile nam tutte le cartelle, file e variabili cercati. Questo codice funziona solo con https://www.miosito.com/pagina.php, non con https://www.miosito.com/cartella/ tantomeno con https://www.miosito.com/cartella ed infine le variabili non vengon comunque riportate, cio se metto un link che funziona tipo https://www.miosito.com/pagina.php?variable=valore lo script funziona ma la variabile non viene riportata in $9:
    codice:
    <IfModule mod_rewrite.c>
    DirectorySlash Off
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301]
    RewriteRule ^(.*)index\.php$ $1 [R=301,NC]
    
    RewriteRule ^(.*)(/?)(.*)(/?)(.*)(/?)(.*)(\.php?)(\?.*)$ https://www.miosito.com/?nam=$0$1$2$3$4$5$6$7$8$9 [R=301,NC]
    </IfModule>



    Ora un altra domanda.. partendo da quanto postato sopra e cambiando solo l'ultimo rewrite, non capisco perchè qualcosa di questo genera arrivi a fare danni. Cioè secondo quanto maldestramente penso, questo rewrite dovrebbe prendere tutto e trasportarlo nel nuovo link, ma questo appunto non succede nemmeno minimamente.
    codice:
    RewriteRule ^(.*)$ https://www.miosito.com/?nam=$0$1 [R=301,NC]

    Se potete chiarirmi le idee sui quesiti sopra prima di arrivare a formulare il rewrite che davvero mi interessa, cioè come detto nella discussione arrivare a mettere tutti link che non esistono nelle mie pagine ma che con rewrite riescono a trovare le pagine .php, cioè tipo https://www.miosito.com/content viene rewritato in https://www.miosito.com/content.php, oppure https://www.miosito.com/dati/content rewritato in https://www.miosito.com/dati/content.php senza naturalmente Redirect, ma appunto lasciando l'url iniziale senza il file .php (trasformato in cartella). Infine anche le variabili passate nell'url dovrebbero essere lette ed interpretate nello stesso modo...

    Vi ringrazio ancora e a presto!

  9. #9
    Ecco l'htaccess di Laravel: https://github.com/laravel/laravel/b...blic/.htaccess

    codice:
    <IfModule mod_rewrite.c>    
        <IfModule mod_negotiation.c>
            Options -MultiViews -Indexes
        </IfModule>
    
        RewriteEngine On
    
        # Handle Authorization Header
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
        # Redirect Trailing Slashes If Not A Folder...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} (.+)/$
        RewriteRule ^ %1 [L,R=301]
    
        # Send Requests To Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L] 
    </IfModule>
    Ed ecco un esempio di index.php:

    codice:
    print('<pre>');
    print($_SERVER['REQUEST_URI']);
    print_r($_GET);
    print('</pre>');

  10. #10
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,128
    Niente, sto provando e riprovando. La faccio semplice:

    - Da un link di questo tipo https://www.miosito.com/folder/ (che non esiste) mi porti senza redirect (cioè lasciando l'url intatto) a https://www.miosito.com/folder.php

    - Da un link di questo tipo https://www.miosito.com/folder1/folder2 (che non esiste) mi porti senza redirect (cioè lasciando l'url intatto) a https://www.miosito.com/folder1/folder2.php

    Non capisco se questa cosa è impossibile, ma le ho provate tutte..


    PS. Ringrazio @filippo.toso ma quel codice non fa propriamente quello che mi serve, mi sembra riporti sempre alla pagina index se un url non esiste!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved.