Dost CakePHP URL'leri SEO eski PHP parametre URL'leri değiştirmek için / .htaccess yönlendirme?

0 Cevap php

Ben yerine eski bir Homegrown çerçeve CakePHP kullanmak için sitemde güncelleme üzereyim. Ben yeni CakePHP SEO dostu URL'ler için eski PHP parametre URL'ler yönlendirmek htaccess dosyası yazmak gerekiyor, ama ben o iş için alınamıyor.

Benim htacess dosyası (app / webroot bir) şu anda bu gibi görünüyor:

RewriteEngine On

RewriteRule ^index.php?action=view&item=172$ index.php?url=item/172 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

Bu çalışmıyor. Ben L kaldırılması ve sadece item/172 yönlendirmek zorunda çalıştı, ama bu da işe yaramadı. Geçerli bir URL parametresi unset ile rüzgarlar, ve ben $ _SERVER ['REQUEST_URI'] bakarsanız o değişmez. Mod_rewrite değiştirmek olsaydı ben bilmiyorum ama. Benim yazma kuralı, doğrudan benim tarayıcınızın URL çubuğuna kopyalanmış olsa bile, aktive edilecek görünmüyor. Ben önde gelen / dışarı dışarı ile çalıştı. Hiçbir zar.

Burada neler oluyor?

Ve nasıl dönüştürme yapmak için bir daha genelleme URL yazabilirsiniz? Ben böyle bir şey denedim:

RewriteRule ^index.php?action=view&item=([0-9]+)$ index.php?url=items/$1 [R=301,L]    

Ama bu da işe yaramadı. Ben yanlış ne yapıyorum?

EDIT Bu olumlu Kudurttun.

RewriteRule ^(.*)$ /index.php?url=item/172 [R=301]

Bu çalışıyor. O doğru oluşturulmuş Kek url içine TÜM adresler kaçmaktadır. Hangi kekinin işlemcisi sonra alır ve bir şekilde yönetir. Ben Cake ikinci yazma kuralı özlüyor nasıl emin değilim, ama öyle. Bu çalışıyor:

RewriteRule ^(.*)$ item/172 [R=301]

Önceki son belirterek yaptığı gibi, bozuk bir yönlendirme döndürür:

RewriteRule ^(.*)$ /index.php?url=item/172 [R=301,L]

Yani tamamlamak asla olduğunu beyan eder.

Yani aslında daha doğrusu neden bu biri olarak şaşırmış:

RewriteRule ^(.*)$ /index.php?url=item/172 [R=301]

Returns the correct Cake url, but it does and it gets sent to the correct page. However, as soon as I attempt to change the first part, it starts failing.

Bir saniye bekle. O ? bu başarısız başlar çarptığında bulunuyor. Bu başarıyla index.php maçları değil index.php? Ama o kaçan hiç fark etmez.

RewriteRule ^index.php\?$ /index.php?url=item/172 [R=301]

Bu doğru URL'yi maç ya dönmek için başarısız olur. $_GET['url'] boş olduğundan ve bütün ya Cake normal yakalamak maç görünmüyor. Nasıl mod_rewrite'ı anlamıyla maç parametre karakterler kaçış?

0 Cevap