Herkes gönderebilir. Ancak doğru yönlendirmek bir sanattır. Ancak daha da zor olanı, kullanıcıları İnternet'te doğru yola yönlendirmek. Bunu yapmanın en iyi yolu php'ye yönlendirmektir.
Yönlendirme nedir?
Web programlamada, bağlantıyı takip eden kullanıcıyı başka bir adrese yönlendirmeniz gereken durumlar vardır. Tabii ki, ilk bakışta, böyle bir yönlendirmenin uygulanması biraz "yasadışı" görünüyor. Uygulamada, böyle bir yönlendirme yalnızca saldırganlar arasında değil, aynı zamanda dürüst web yöneticileri arasında da talep görmektedir:
Hangi durumlarda bir yönlendirme gerekli olabilir:
- Site motoru değiştirildiğinde, sonuç olarak tüm kaynağın mimarisi değişir. O zaman sorun ortaya çıkar, nasıl yönlendirme yapılır;
- Kaynağın yapısını yeniden çizerken, tüm bölümlerin veya bir malzemenin eklenmesi, çıkarılması veya aktarılması gerçekleşir. Bu işlem devam ederken kullanıcıyı geçici olarak istediğiniz bölüme yönlendirebilirsiniz;
- Site alan adını yakın zamanda değiştirmişse, alan adını değiştirdikten sonra eskisi bir süre arama sonuçlarında görünmeye devam edecektir. Bu durumda, kullanıcının yeni bir etki alanına yönlendirmesi arama motoru tarafından otomatik olarak gerçekleştirilecektir;
- Yetkilendirme sürecinde - kural olarak, büyük bir sitede iki kullanıcı grubu vardır: sıradan ziyaretçiler ve kaynak yöneticileri. Bu durumda, her kullanıcı için haklarına ve rolüne göre bir yönlendirme uygulamak mantıklıdır. Yetkilendirmeden sonra site yöneticisi veya moderatörler kaynağın yönetim kısmına, ziyaretçiler ise kaynağın kullanıcı kısmına geçer.
php'ye yönlendirmenin özellikleri
Diğer dillerden farklı olarak, php'nin yönlendirme uygulamasında bazı avantajları vardır:
- Php, sunucu taraflı bir programlama dilidir. Bu nedenle yönlendirme, tarayıcıda görüntülenen sayfaların html kodunda değil, sunucuda barındırılan komut dosyasında gerçekleşir;
- Bir php yönlendirmesi birkaç şekilde uygulanabilir. Uygulamasını büyük ölçüde genişleten;
- Sunucudaki veri işleme nedeniyle, php kullanılarak uygulanan yönlendirme, arama motoru filtrelerinin eylemine daha az duyarlıdır.
PHP'de yönlendirmek için header() işlevini kullanın. Http başlığını göndermek için kullanılır. Sözdizimi:
void başlık (string $string [, bool $replace = true [, int $http_response_code ]])
İşlev tarafından kabul edilen argümanlar:
- $dize- başlık satırı;
Bu argümanın iki türü vardır. Birincisi bağlantı durum kodunu göndermek içindir. "HTTP/" ile başlar. Diğer tür, başlıkla birlikte istemci tarayıcısına bir durum kodu (YÖNLENDİRME 302) gönderir. Bu argüman "Konum:" ile başlar.
- bool $replace, isteğe bağlı bir bool niteliğidir. Önceki başlığı geçersiz kılmaktan sorumludur. true olarak ayarlanırsa, aynı türden önceki başlık veya başlıklar değiştirilir. Argüman false olarak ayarlanırsa, başlığın üzerine yazılmaz. Varsayılan, true olarak ayarlanmıştır;
- http_response_code - Bağımsız değişken, HTTP yanıt kodunu zorlar. Dize bağımsız değişkeninin boş olmaması koşuluyla kod yüklemesi başarılı olacaktır.
HTTP durum kodu, sunucu yanıtının en üst satırının bir parçasıdır. Kod, İngilizce olarak açıklayıcı bir yazıtın takip ettiği üç basamaktan oluşur. İlk hane durum sınıfından sorumludur. Yönlendirmeler 300'den 307'ye kadar olan kodlara karşılık gelir. Tam açıklamaları ilgili teknik belgelerde bulunabilir.
Harici bağlantıları yeniden yönlendirmek için header() işlevini kullanırken, çağrısının konumu büyük önem taşır. Kodda, tüm html etiketlerinin üzerinde olmalıdır:
header() yönlendirmesini kullanma
İşlevin yerel sunucuda nasıl çalıştığını göstermek için iki dosya oluşturmanız gerekir. Bir tanesine redirect.php, diğerine redirect2.php diyelim. İlkinin içinde, aşağıdaki biçimde bir işlev çağrısı yaparız:
Başka bir dosyaya şu satırı koyun:
echo "Merhaba! Yönlendirme2.php'desiniz";
PHP'ye yönlendirme kullanmanın birkaç pratik örneği:
- Http durum kodunu iletmeye zorlama - "türünün header() işlevinin ilk argümanını kullanırken yer» varsayılan olarak durum kodu « başlığına gönderilir 302 » ( geçici olarak taşındı). Bir kaynağı başka bir alan adına aktarırken bu bir sorun haline gelebilir. Arama motorlarında böyle bir geçici yönlendirme gecikebilir. Sonuçta, arama motoru durum kodunu sürekli olarak analiz eder. Ve diyor " geçici olarak taşındı". Durum kodunun zorla yeniden yazılmasına bir örnek " 302 " üzerinde " 301 » ( kalıcı olarak taşındı):
Yeniden yazma da iki aşamada mümkündür. İlk satır durum kodunun üzerine yazar ve ikinci satır yeni bir adrese yönlendirir:
- Kullanıcının rolüne dayalı olarak yeniden yönlendirmek için harici bağlantıları yeniden yönlendirmek. Rol, kimlik doğrulama prosedürü sırasında belirlenir. İşlenecek değer $who değişkenine yazılır:
- Harici bir bağlantı yönlendirmesi uygulamanın basitleştirilmiş pratik bir örneği - bir bağlantıya tıklamak bir php sayfasına götürür. Buradan kullanıcı 5 saniye içinde Rambler'a aktarılır. HTML Kodu:
Beni tıkla
yönlendirme3.php dosya kodu:
Pekala, burada php'de bir yönlendirmenin temellerini öğrendik. Artık kullanıcıları doğru yöne yönlendirmeyi güvenle üstlenebilirsiniz. Ana şey, yönde bir hata yapmamaktır, aksi takdirde tüm kullanıcılarınızı başka birinin sitesine yönlendirirsiniz ...
Kullanıcıyı başka bir sayfaya ne sıklıkla yönlendirmeniz gerekiyor? Nadir olmadığından eminim. Bu görevi gerçekleştirmek için çeşitli yöntemler kullanılır.
javascript'e yönlendirme
Kullanıcıyı yönlendirmek istediğiniz sayfada aşağıdaki kodu ayarlayın:
http://www.site yerine kullanıcıyı yönlendirmek istediğiniz sayfayı belirtin. Tarayıcıda javascript etkinleştirilmemişse yöntem çalışmaz. Ancak, uygulamanın gösterdiği gibi, javascript, sitenin neredeyse tüm kullanıcıları için etkinleştirilmiştir. Ancak aynı zamanda arama botları için devre dışı bırakılmıştır.
Yenileme meta etiketiyle yönlendirme
Html etiketlerini kullanalım. Sayfanın ne zaman yenilendiğini gösteren etiket şöyle görünür:
Bu formdaki etiket, sayfa adresini etikette belirtilen yenisiyle değiştirerek 5 saniye sonra sayfayı tarayıcıda yenilenmeye zorlar.
Ama 5 saniye ile yetinmiyoruz o yüzden etiketin son hali şu şekilde olacak:
< meta http-equiv = "refresh" content = "0;url=http://www.сайт" /> |
Etiketler ve javascript ile yönlendirmenin dezavantajı, site hareket ederse, etki alanı değişirse veya dosyalar taşınırsa makalenin kullanıcı için aynı kalması, ancak arama motorları için aynı kalmasıdır. Bu nedenle, bir siteyi taşırken, ana site boş olması nedeniyle arama sonuçlarından çıkacağından ve yeni site “intihal” nedeniyle sonuçlara dahil edilmeyeceğinden bu yöntemleri kullanmak kesinlikle imkansızdır. Evet, evet, arama motorları siteyi intihal olarak değerlendirecektir. Ve bu site önceki sitenizden içerik çaldı. İntihalciler, arama sonuçlarında önemli ölçüde düşer. Hata yapma.
php medya yönlendirmesi
Burada her şey basit. Uygun http başlığını göndermeniz gerekiyor
Üzücü deneyim, sunucunun durumunu ihmal edemeyeceğinizi söylüyor.
Makalelerimden biri genellikle arama motoru sonuçlarında bulundu. Ama başka bir adrese aktarmaya karar verdim. Sonuç olarak, A adresi B adresi olarak değişti. Aynı zamanda, A adresine gelen ziyaretçiler için herhangi bir başlık göndermedim. Bir süre sonra arama botları B sayfasını da buldu. Dizine eklediler, A sayfası ile aynı olduğunu gördüler ve görmezden geldiler. Sonra A sayfasına gittiler, kaybolduğunu gördüler, kendi veri tabanlarından kaldırdılar.
Sonuç olarak makalem arama motorlarından düştü.
Bu nedenle materyalleri aktarırken gerekli http başlıklarını belirtmeyi unutmayınız.
Apache sunucusunu (.htaccess) kullanarak yönlendirme
Yönlendirmenin belki de en uygun yolu. Yeni bir etki alanına yönlendirme örneği:
Böylece sitenin kök dizininde bulunan old.htm dosyasından gelen isteği, newcategory dizininde bulunan rewrite.html dosyasına yönlendiriyoruz.
Zaten fark ettiğiniz gibi (ve zamanı olmayanların hala son bir şansları var), RewriteRule, yönlendirmelerle her şeyi yapmanıza izin veren normal ifadeleri destekler.
Örneğin, .htm dosyasını bir resim yaptım (RewriteRule ^(.*).htm$ $1.jpg), yani. dog.htm adresinden tarayıcı beni dog.jpg resmine attı. Şu anda yardımlarıyla çalıştığımız mod_rewrite modülünün tüm olanaklarını anlatmak istemiyorum. Bununla ilgili bir çok eğitim yazılmıştır, ancak isterseniz, kendiniz hakkında daha fazla bilgi arayabilirsiniz. (Örneğin, true, İngilizce olarak.)
Bu yöntemin avantajı ağrısız olmasıdır. Yani materyallerin aktarılması ve ardından eski adresten yenisine yönlendirme, sitenin arama motorlarındaki konumunu etkilemeyecektir. Sistem, php'nin yüklenmesini gerektirmemesi dışında, php'ye yönlendirme ile aynı şekilde çalışır. Ancak bir dezavantajı var: mod yeniden yazma yoluyla yeniden yönlendirme, sunucuyu php aracılığıyla aynı yönlendirmeden biraz daha fazla yükler. Ve mod yeniden yazma modülü her zaman apache'ye kurulmaz. Şu anda çoğu sunucu onu kursa da, bu modülün kurulmadığı izole klinik vakalar hala vardır.
Size en uygun yöntemi seçin ve sitenize yükleyin!
Bu sayfada hızlı gezinme:
Bir komut dosyası yazmaya ve PHP'yi yeniden yönlendirmeye karar verirseniz, bu adımın faydaları açıktır: PHP sunucu yönelimli bir komut dosyası dilidir; yönlendirme, ziyaretçinin tarayıcısında değil, sunucudaki bir komut dosyası aracılığıyla yapılacaktır. Bazı yönlendirmeler istemci tarafında yapılabilir - bir js yönlendirmesi aracılığıyla (yani bir JavaScript yönlendirmesi aracılığıyla).
Bu daha esnek ve çok yönlü bir yaklaşımdır ve PHP'de diğer yöntemlerden farklı olarak birkaç tür yönlendirme gerçekleştirebilirsiniz. PHP'de yapılabilecek en yaygın yönlendirme türleri şunlardır: a) PHP 301 yönlendirmesi (kalıcı yönlendirme durumu), b) PHP 302 yönlendirmesi (geçici yönlendirme durumu), c) Güncelleme.
Bu makale, öncelikle, Htaccess gibi diğer yaygın çözümleri kullanarak bu mümkün olmadığında URL yeniden yönlendirmesi uygulamanın yollarını arayan acemi web yöneticileri için faydalı olacaktır.
PHP Dil Başlığı İşlevi
Örneğin, bu URL'ye http://www.somewebsite.com/target.php yönlendirmek istediğinizi varsayalım. Sayfanın PHP kaynağında, bu yönlendirme komut dosyasını çağırmanız yeterlidir:
Ayrıca bu basit denemeyi localhost'unuzda deneyin:
1) Bir metin düzenleyici açın ve şu kodu girin:
Onu targetpage.php olarak kaydedin.
2) Başka bir boş metin dosyası açın ve şu kodu girin:
Originingpage.php olarak kaydedin.
3) Şimdi web tarayıcınızı başlatın. Tarayıcı adres çubuğuna şunu girin: http://localhost/originatingpage.php
4) Giriş düğmesine bastıktan sonra, http://localhost/originatingpage.php URL'sinin http://localhost/targetpage.php ve targetpage.php'ye yönlendirildiğini fark edeceksiniz ve "Merhaba bu kodeks - x".
En yaygın hatalardan biri, html yönlendirme kodunun tasarımında olabilir:
Bu deneyi deneyin:
Originingpage.php betiğine gidin ve herhangi bir HTML etiketi ekleyin:
header('Konum: http://localhost/targetpage.php');
Diyelim ki şöyle bir kodunuz var:
2) Dosyayı kaydedin.
3) Origining.php betiğini tekrar . Herhangi bir hata görmüyorsanız, bunun hala net bir şekilde targetpage.php'ye yönlendirildiğini fark edeceksiniz.
4) Şimdi hedef url'yi şu şekilde gerçek siteye işaret edecek şekilde değiştirmeyi deneyin:
5) Originingpage.php dosyasını sitenin kök dizinindeki uzak barındırmaya yükleyin.
6) Originatingpage.php URL'sini arayarak komut dosyasını tarayıcıda çalıştırın, örneğin: http://www.php-developer.org/originatingpage.php
7) Bu sefer bir hata ile karşılaşacağınızı fark edeceksiniz:
Uyarı: Başlık bilgisi değiştirilemiyor - 7. satırda /home/phpdevel/public_html/originatingpage.php içinde (/home/phpdevel/public_html/originatingpage.php:6 adresinden başlatılan çıktı) tarafından zaten gönderilen başlıklar
Burada neler oluyor? Sorunun nedeni, işlev başlığından önce HTML çıktısına sahip olmanızdır.
Yönlendirme ne işe yarar?
Yönlendirme ile kullanıcıları bir web sayfasından diğerine yönlendirebilirsiniz. Ayrıca, örneğin sitenizde makale bağlantılarının metinleri çirkin bir biçimdeyse (bir dizi sayı veya karakter), harf çevirisi uygulanarak ve bu bağlantılara yeniden yönlendirilerek değiştirilebilirler. Yönlendirme olanakları neredeyse sınırsızdır! Sayfa dizine eklemeyi artırmak, site performansını iyileştirmek ve kullanıcıları çekmek için bu yöntemin faydaları açıktır.
Bir sayfayı ziyaret eden kullanıcıların https://example.com/initial.php https://example.com/final.php sayfası görüntülendi. Bu PHP , JavaScript ve HTML'de çeşitli yöntemler kullanılarak yapılabilir . Bu yazıda PHP'yi başka bir sayfaya yönlendirmek için kullanabileceğiniz yöntemlerin her birini ele alacağız.
İşte kullanacağımız birkaç değişken:
Bir URL'yi Yeniden Yönlendirmek için PHP header() İşlevini Kullanma
initial.php'den final.php'ye bir yönlendirme eklemek istiyorsanız, aşağıdaki kodu initial.php web sayfasına koyabilirsiniz. Tarayıcıya yeni bir konum başlığı gönderir:
Burada bir yönlendirme oluşturmak için PHP'nin header() işlevini kullanıyoruz. Bu kodu herhangi bir HTML veya metinden önce yerleştirmeniz gerekir. Aksi takdirde, başlığın zaten gönderildiğine dair bir hata alırsınız. Başlıkları gönderirken bu hatayı önlemek için çıktı arabelleğe almayı da kullanabilirsiniz. Aşağıdaki örnek, bu PHP yönlendirmesini çalışırken göstermektedir:
header() işlevini kullanarak yeniden yönlendirmek için ob_start() işlevi PHP betiğinde önce gelmelidir. Bu, başlık hatalarının oluşmasını önleyecektir.
Ek bir önlem olarak, web sayfası kodunun geri kalanının yürütülmemesi için başlık yönlendirmesinden hemen sonra die() veya exit() ekleyebilirsiniz. Bazı durumlarda, tarayıcılar veya tarayıcılar Konum başlığındaki göstergeye dikkat etmeyebilir. Sitenin güvenliğine yönelik potansiyel tehditlerle dolu olan:
Açık olmak gerekirse: die() veya çıkış()'ın yönlendirmelerle hiçbir ilgisi yoktur. Web sayfasındaki kodun geri kalanının yürütülmesini önlemek için kullanılırlar.
PHP bir sayfaya yönlendirme yaptığında, Location başlığının değeri belirtilirken mutlak URL'lerin kullanılması tavsiye edilir. Ancak göreceli URL'ler de işe yarayacaktır. Bu özelliği, kullanıcıları harici sitelere veya web sayfalarına yönlendirmek için de kullanabilirsiniz.
PHP'nin echo() işleviyle JavaScript yönlendirme kodunun çıktısı
Bu saf bir PHP çözümü değil. Ancak aynı zamanda etkilidir. Yönlendirmeyi işleyecek JavaScript kodunun çıktısını almak için PHP echo() işlevini kullanabilirsiniz.
Bu çözümü kullanırsanız, çıktı arabelleğe almayı kullanmak zorunda kalmazsınız. Bu ayrıca başlık göndermeyle ilgili hataları da önler.
Aşağıda, geçerli sayfadan diğerine yönlendirmek için farklı JavaScript yöntemlerini kullanan birkaç örnek verilmiştir:
self.location="https://example.com/final.php";"; Eko ""; Eko ""; Eko ""; ?>
Başka bir PHP sitesine yeniden yönlendirme yönteminin tek dezavantajı JavaScript'in istemci tarafında çalışmasıdır. Ve ziyaretçilerinizin JavaScript'i devre dışı bırakılmış olabilir.
Yönlendirmeler için HTML meta etiketlerini kullanma
Yönlendirmeyi gerçekleştirmek için temel HTML'yi de kullanabilirsiniz. Profesyonelce gelmeyebilir, ancak işe yarıyor. Ayrıca tarayıcıda JavaScript'in devre dışı bırakılması veya daha önce bir başlık hatası gönderilmesi konusunda endişelenmenize gerek yok:
Sayfayı her " otomatik olarak yenilemek için önceki örnekteki son satırı da kullanabilirsiniz. n» saniye. Örneğin, aşağıdaki kod her 8 saniyede bir sayfayı otomatik olarak yenileyecektir:
Çözüm
Bu yazıda index php ile üç farklı yönlendirme yöntemini ve bunların avantaj ve dezavantajlarını ele aldım. Kullanılacak özel yöntem, projenin amaçlarına bağlıdır.
Makalenin çevirisi " PHP'de sayfa yüklenmeden önce farklı bir url'ye nasıl yönlendirme yapabilirim» güler yüzlü proje ekibi.
İyi kötü
En son 25 Şubat 2017'de Vincy tarafından değiştirilmiştir.
PHP yönlendirme mekanizması, herhangi bir köprüye tıklamadan kullanıcıyı bir sayfadan diğerine yönlendirmek için kullanılır. Bu, yönlendirmenin arka planda yapılması gereken durumlarda yardımcı olacaktır. Örneğin, kullanıcı ödeme ağ geçidine erişirken, PHP betiği kullanılarak URL'yi bilgilendirmek için yönlendirme otomatik olarak yapılmalıdır.
PHP, URL yeniden yönlendirmesi için başlık() adlı önceden tanımlanmış bir işlev sağlar. Bu header() işlevini kullanarak, sayfanın yönlendirileceği URL'yi belirterek konum başlığını göndermemiz gerekiyor.
Tarayıcıya bağlı olarak URL yönlendirme çalışmalarını ele almanın birkaç yolunun olduğu yerlerin aksine, PHP bu tür karışıklığı önler ve header() işlevinin tüm tarayıcılarda aynı etkiyi yaratmasını sağlar. Yalnızca bunun için, sunucu tarafı yönlendirmesinin tercih edildiği JavaScript yönlendirme makalesiyle sonuçlandırdık.
PHP Yönlendirme Sözdizimi
başlık("Konum: Hedef URL");PHP yönlendirmesinin yukarıdaki sözdiziminde, taşımak istediğimiz geçerli bir URL ile değiştirmemiz gerekiyor. Bu konum başlığı için mutlak URL veya göreli URL belirtebiliriz. Göreceli URL belirtirsek, alanımızda bulunduğumuz sayfayı arayacaktır.
Not: Konum başlığı için sayfa URL'si belirtmeden önce sayfanın var olduğundan emin olmalıyız.
Yönlendirmeden önce dikkat
PHP yönlendirmesini çalıştırmadan önce, header() işlevini çağırdığımız satırdan önce tarayıcıya hiçbir çıktı gönderilmediğinden emin olmalıyız. Örneğin,
echo "PHP Yönlendirmesi"; başlık ("Yer: site");
Bu komut dosyası, tarayıcıya aşağıdaki uyarı bildirimini görüntüler.
Uyarı: Başlık bilgileri değiştirilemiyor - önceden gönderilen başlıklar (...
Yalnızca başlık işlevi için değil, set_cookie(), session_start() vb. gibi tüm PHP işlevleri için, başlığı değiştirebilecek ne olursa olsun uygulanabilir. Bunun için tarayıcıya konum başlığı göndermeyi durduracak tüm içeriği kaldırmalıyız.
Çıktı Göndermenin Olası Yolları
- Metin veya etiketler gibi HTML içeriği.
- PHP sınırlayıcılarından önce gereksiz boşluklar.
- Yönlendirme çağrılmadan önce meydana gelen PHP hata veya uyarı bildirimleri.
- PHP, yankı(), print() gibi.
PHP Yönlendirmesinden Önce Gönderilen Çıktıdan Alınan Güvenlik Önlemleri
- HTML içeriği yönlendirmeden önce gönderileceği için PHP mantığını HTML içeriğinden ayırabiliriz.
- Güvenlik tarafında olmak için koyabiliriz çıkış PHP dosyasının yönlendirme ifadesinden sonra komut. Örneğin, header("Yer: site"); çıkış;
- PHP çıktı arabelleğe almayı, tarayıcıya çıktı göndermeyi durdurmak ve bunun yerine bir arabellekte saklanmak için etkinleştirebiliriz.
Altın Numaralar Güzel bir telefon numarası nasıl satılır
Kripto para madenciliği: basit kelimelerle nedir
En iyi dizüstü bilgisayar işletim sistemi: Eksiksiz inceleme
Sınıf arkadaşlarından müzik indirmek için programlar Sosyal ağ sınıf arkadaşlarından üzücü bir şarkı indirin
Yandex tarayıcısının mobil versiyonu