Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    .htaccess per bloccare l'aggiunta di parametri

    ragazzi ho una regola del genere:


    RewriteRule ^view/([0-9]+).html /page.php?id=$1 [L]


    funziona normalmetne il problmea è che qualcuno può scrivere benissimo:

    view/10.html?par1=232&par2=redf

    il link continuerà a funzioanre bene quando io invece voglio che restituisca un 404..

    è possibile?

    ho provato a fare:
    RewriteRule ^view/([0-9]+).html$ /page.php?id=$1 [L]

    ( aggiungere $ alla fine ) ma non cambia nulla

  2. #2
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    431
    Hai postato nella sezione php percui immagino che ti interessi una soluzione php.
    Se tu sai che in quel file avrai sempre e solo un valore passato in get puoi fare in questo modo:

    Codice PHP:
    if(count($_GET) > 1)
    header("HTTP/1.0 404 Not Found"); 

  3. #3
    si questo lo so, ma volevo una soluzione da .htaccess per non modificare il file, anche perchè non potrei fare come te perchè quella pagina è usata anche per link con 2 parametri

    thx
    anyway

  4. #4
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    431
    Hai sbagliato sezione allora.

  5. #5
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573
    Prova così:

    codice:
    RewriteEngine On 
    RewriteCond %{REQUEST_URI} view/([0-9]+).html
    RewriteCond %{QUERY_STRING} !.
    RewriteRule ^view/([0-9]+).html /page.php?id=$1 [L]

  6. #6
    non posso appesantirle con 2 rewritecond cosi perchè le richieste da gestire sono tante...


  7. #7
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573
    Da qualche parte il controllo se la querystring esiste lo dovrai fare
    Il controllo sul REQUEST_URI me lo terrei per scrupolo, son gusti personali , ma lo puoi anche omettere e diventa una sola cond .
    Non credo che siano 2 RewriteCond ad appesantire la gestione delle richieste, nel momento in cui decidi di utilizzare mod_rewrite.
    Se hai molti accessi e se puoi accedere al file di configurazione del virtualhost, rimetti a None la direttiva AllowOverride e includi direttamente nei blocchi <Directory> le varie regole di Rewrite che usi.

    http://httpd.apache.org/docs/2.2/rew....html#htaccess
    ...Rewriting is typically configured in the main server configuration setting (outside any <Directory> section) or inside <VirtualHost> containers. This is the easiest way to do rewriting and is recommended....
    http://httpd.apache.org/docs/2.2/mod...#allowoverride
    When this directive is set to None, then .htaccess files are completely ignored. In this case, the server will not even attempt to read .htaccess files in the filesystem.

    When this directive is set to All, then any directive which has the .htaccess Context is allowed in .htaccess files.
    For security and performance reasons, do not set AllowOverride to anything other than None in your <Directory /> block. Instead, find (or create) the <Directory> block that refers to the directory where you're actually planning to place a .htaccess file.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.