2010-08-27 7 views
2

Je voudrais créer un mod rewrite dans mon fichier htaccess qui peut changer ceci:Créer ma propre TinyURL en utilisant htaccess rewrite

mydomain.com/abCdE

à ceci: mydomain.com/controller/view/parameter/abCdE

Merci d'avance!

P.S. J'utilise Zend Framework

Stefano

+0

Pouvez-vous être clair: devrait toujours rediriger mydomain.com/foo vers mydomain.com/controller/view/parameter/foo, ou pourrait-il rediriger vers mydomain.com/quelquechose/else/entirely/bar '? – fredley

+0

Pas toujours, il redirige vers mydomain.com/quelquechose/else/entirely/bar. Un grand merci pour votre réponse! –

Répondre

2

Vous pouvez utiliser mod_rewrite pour rediriger tous (ou presque tous) demande à un fichier PHP, et faire faire le travail:

RewriteEngine on 
RewriteRule (.*) /parser.php?q=$1 

Si vous voulez pour laisser quelques pages, vous pouvez mettre des conditions:

RewriteEngine on 

# Makes root of your site not to redirect to parser: 
RewriteCond %{REQUEST_URI} !^/$    

# Same for mypage.php 
RewriteCond %{REQUEST_URI} !^/mypage.php$ 

# testdir and all files in it are not redirected to parser 
RewriteCond %{REQUEST_URI} !^/testdir/ 

RewriteRule (.*) /controller/view/parameter$1 
3

J'ai créé ce genre de chose dans le passé. Voici ce que vous voulez: (! * Y compris les paramètres _GET supplémentaires)

RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule (.*) /parser.php?q=$1 [L,QSA] 

De cette façon, chaque fichier existant et le répertoire sur votre site Web fonctionne toujours, et tout le monde sera passé aussi.

Si vous mettez cela à l'intérieur d'un fichier .htaccess, modifiez le RewriteRule à

RewriteRule (.*) parser.php?q=$1 [L,QSA] 

Cela devrait bien répondre à votre question.