2011-09-06 8 views
1

Dans ma page web PHP Je veux rediriger comme suit:Url Reécriture avec Apache mod_rewrite

header("Location: page2.php?id=$tid"); 

Le querystring est nécessaire par page2.php, mais je ne veux pas le querystring affiché dans le navigateur du visiteur. Je pensais que je pouvais éliminer le querystring en utilisant mod_rewrite comme suit:

RewriteEngine On 
RewriteRule ^page2\.php page2\.php? 

Cela supprime simplement la chaîne de requête pour page2.php (ce qui en fait se comporter d'une manière non désirée), et affiche toujours la chaîne de requête dans l'URL du navigateur zone d'affichage.

J'ai trouvé d'autres références sur la suppression querystrings, comme mod_rewrite: remove query string from URL?, mais quand j'ajoute la redirection à la règle comme [R = permanent], l'URL affichée par mon navigateur va de

localhost/admin/page2.php?id=123 

avec par une page Web qui affiche bien, à

http://localhost/C:/xampp/htdocs/admin/page2.php 

où la page Web n'est pas chargé, mais ce qui suit est affiché:

Access forbidden! 

You don't have permission to access the requested object. 
It is either read-protected or not readable by the server. 

If you think this is a server error, please contact the webmaster. 

Error 403 

localhost 
9/5/2011 9:57:19 PM 
Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1 

Comment puis-je rediriger vers une page qui nécessite une chaîne de requête, mais masquer cette chaîne de requête du visiteur pour qu'elle ne leur soit pas affichée par leur navigateur?

+0

.htaccess et ne marche pas mod_rewrite généralement bien localhost – swordfish

+0

Avez-vous une autre méthode de passage * tid * à page2.php? Deuxièmement, la réécriture d'URL ne peut pas être utilisée pour modifier l'URL affichée dans le navigateur. Il est utilisé pour traduire de jolies URL en vilaines * en interne *. –

Répondre