2010-07-14 8 views
0

Possible en double:
Passing varible types though mod-rewritePHP: se débarrasser de 'p =? Dans l'URL?

allo, J'utilise la méthode get sur mon projet en cours. mes liens renvoient à <a href='?p=". $path … et que je reçois là des valeurs avec if(isset($_GET['p'])) …

chaque fois que je clique sur un lien de l'URL dans les changements de adressbar à mydomain.com/?p=files/path/subpath

Je me demande si je peux en quelque sorte utiliser mod_rewrite ou quoi que ce soit d'autre que j'ordonne obtenir une url plus jolie. J'aimerais se débarrasser de la partie "/?p=files/" dans mon URL. ce serait cool si le endresult ressemblerait à ceci:

mydomain.com/path/subpath

est-ce possible? concernant mat

Répondre

3

Si vous utilisez ce type d'URL, vous faites probablement quelque chose de mal dans votre programme.

Par exemple, supposons que vous utilisez un fichier htpasswd pour stocker vos utilisateurs du site Web. Et je passe en ?p=../.htpasswd. Maintenant, je peux entrer en tant que l'utilisateur qui a «s'il vous plaît» comme mot de passe. Ou je passe ?p=/etc/passwd, et obtenir une liste des utilisateurs valides sur votre système. Oui, vous pouvez vous débarrasser de ?p= en utilisant mod_rewrite (http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html). Mais vous devriez vraiment vous assurer que vous savez ce que vous faites et que les spécifications de chemin arbitraires ne sont pas possibles.

+1

+1 sécurité est tout ces jours-ci! – Tim

+0

ne devrait-il pas être quelque chose comme ça? Options + SuivezSymLinks RewriteEngine On RewriteRule^([^/\.] +)/* $ /? P = $ 1 [L] – matt

Questions connexes