Diggbar modrewrite-Nasıl modrewrite aracılığıyla URL'leri geçmek?

2 Cevap php

Yeni Diggbar ile, şu anda herhangi bir URL önünde http://digg.com koyabilirsiniz ve bir Digg kısa URL yaratacaktır. (Ben bu hiç de yeni olduğumdan emin değilim gerçi) Ben sadece onlar modrewrite bunu varsayarak yaşıyorum.

Bu nasıl yapılır? Ben üzerinde çalışıyorum bir web sitesi ile bu deneyin zaman bu bombalar dışarı, bana görünüyor.

Ben aşağıdakileri yapabiliyor olmak istiyorum:

http://example.com/http://stackoverflow.com/question/ask

ve bu gitmek için izin verecek bir modrewrite var

http://example.com/index.php?url=http://stackoverflow.com/question/ask

Ama bu modrewrite kullandığınızda:

RewriteEngine on
RewriteRule ^([A-Za-z0-9]+)$ /message.php?id=$1 [L]

çalışmıyor. Ben yanlış ne yapıyorum?

2 Cevap

Sen Apache boş yol parçalarını kaldırır çünkü request line adlı değeri almak zorunda. Başlangıçta istenen URI yol /http://foobar/ becomes /http:/foobar/. Ama istek hattı (THE_REQUEST) bakir kalır:

RewriteCond %{THE_REQUEST} ^GET\ /(https?://[^\s]+)
RewriteRule ^https?:/ index.php?url=%1 [L]

Sadece düzenli ifadede harfler ve sayılar için arıyoruz, bu nedenle kolon ve eğik açmıyorum. Ayrıca, örnek index.php kullanarak ve Htaccess olarak message.php konum ;)

Muhtemelen böyle bir şey isteyeceksiniz:

RewriteEngine on
RewriteRule ^http://(.+)$ /index.php?url=$1 [L]

Bu, sadece burada URL'leri yakalamak emin olur ve hala düzenli sayfaları olabilir! (Eğer example.com / index.php gitti eğer, sonsuz bir döngü içinde sona olurdu ne olurdu düşünün.)