2010-07-19 6 views
0

Je suis au milieu de passer un site de php au framework CakePHP « bon vieux » et je dois être capable de gérer certaines URL existantes, par exemple:URL hérités dans CakePHP en utilisant les routes ou htaccess

foo.com/bar.php?id=21 

est le modèle des URL en cours, mais dans le nouveau site en utilisant le gâteau, cette URL doit rediriger vers:

foo.com/blah/21 

donc, fondamentalement, je dois être en mesure de saisir ce numéro d'identification et le transmettre .

Il se peut que je travaille sur environ 4 heures de sommeil, mais je n'arrive pas à le faire fonctionner dans /app/webroot/.htaccess, peu importe ce que je reçois motif regex.

Je suis ouvert à toute solution qui utilise le .htaccess ou routes.php - de toute façon je serais reconnaissant pour les idées!

+0

pourrait vous postez vos résultats .htaccess s loin? –

Répondre

0

Je pense que vous trouverez probablement une solution ici: http://www.simonecarletti.com/blog/2009/01/apache-query-string-redirects/, en utilisant quelque chose comme:

RedirectMatch ^/oldfolder/(.*)$ http://mydomain.site/newfolder/$1 

Il peut être difficile d'obtenir votre tête ronde htaccess - Je ne l'ai pas beaucoup de place dans ma tête - mais il vaut la peine de persévérer avec le manuel d'apache et de regarder quelques-uns des centaines de milliers de tutoriels et de solutions que Google va revenir.

1

Donc, avec un peu de peaufinage, la réécriture finale est avéré comme ceci:

RewriteEngine On 
# My hack to get Legacy URLs to work 
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$ 
RewriteRule ^bar\.php$ http://foo.com/bar/%1? [R=301,L] 
# Cake's Default Rewrite 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

Notez le ? de fuite après la %1 - sans elle, la réécriture est foo.com/bar/21?id=21, avec elle, il est foo.com/bar/21

Questions connexes