Andria ucp php yönlendirme. Sayfa yüklenmeden önce PHP'de başka bir URL'ye yönlendirme nasıl ayarlanır? URL'den sondaki eğik çizgiyi kaldırma işlevi

  • 03.11.2019

301 Kalıcı Olarak Taşındı durumuna sahip bir HTTP durum kodu, istenen belgenin Konum başlığı alanında belirtilen yeni URI'ye kalıcı olarak taşındığını gösterir.

Bu ne için?

Öncelikle sitenin alan adı değiştirilirken site adresindeki değişikliğin arama motorlarına bildirilmesi gerekmektedir. İkincisi, site adını www ile ve onsuz yapıştırmak için. Üçüncüsü, Page Rank'ı yeni bir siteye hızlı bir şekilde aktarmak.

PHP

Birinci yöntem

İkinci yöntem

Perl

Birinci yöntem

$cgi = yeni CGI; print $cgi->redirect("http://www.example.com/");

İkinci yöntem

#!/usr/bin/perl -w katı kullanın; print "Durum: 301 Kalıcı Olarak Taşındı\n"; "Konum: http://www.example.com/\n\n" yazdır; çıkış;

ASP.NET

Birinci yöntem

İkinci yöntem (sürüm 4.0'dan)

RedirectPermanent("http://www.example.com");

A.S.P.

<%@ Language=VBScript %> <% Response.Status="301 Moved Permanently" Response.AddHeader "Location", "http://www.example.com/" response.end %>

raylar üzerinde yakut

def do_something headers["Status"] = "301 Kalıcı Olarak Taşındı" redirect_to "http://www.example.com/" end

soğuk füzyon

<.cfheader statuscode="301" statustext="Moved Permanently"> <.cfheader name="Location" value="http://www.example.com">

Java (JSP)

<% response.setStatus(301); response.setHeader("Location", "http://www.example.com"); response.setHeader("Connection", "close"); %>

Apache Web Sunucusu (.htaccess)

Birinci yöntem (mod_alias, Yönlendirme)

Yönlendirme 301 / http://www.example.com

İkinci yöntem (mod_alias, RedirectPermanent)

Yönlendirme Kalıcı / http://www.example.com

Üçüncü yöntem (mod_alias, Kalıcı yönlendirme)

Kalıcı yönlendirme / http://www.example.com

Dördüncü yöntem (mod_alias, RedirectMatch)

RedirectMatch 301 ^(.*)$ http://www.example.com/

Beşinci yöntem (mod_rewrite)

Seçenekler +FollowSymLinks RewriteBase'de RewriteEngine / RewriteRule ^(.*)$ http://www.example.com/$1

6.1K

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.

Site kurarken oldukça önemli bir nokta. Yanlış yapılandırılmış bir yönlendirme, sitenin arama sonuçlarına ciddi şekilde zarar verebilir. Permanent Redirect 301 kullanmanız gereken en yaygın durumlar:

  • Web sitesi adresi değişikliği- alanınızı satın aldınız ve site.example.com'dan site.ru'ya taşınmaya karar verdiniz
  • Aynaları yapıştırma - siteniz www.site.ru ve site.ru adresinde mevcutsa, arama motorları onu iki farklı site olarak görebilir, bu nedenle önce ana aynaya (www ile veya www olmadan) karar vermeniz ve yönlendirmeleri ayarlamanız gerekir. ana aynaya.
  • Bir sayfa (bir veya daha fazla) adresini değiştirdiğinde- bir noktada http://example.com/index.php?option=com_content&task=view&id=23&Itemid=1 adreslerinin iyi olmadığı ve adreslerinin şu şekilde değiştirilmeleri gerektiği anlaşıldı. http://example.com/sport/news12, ancak arama motorlarının dizinindeki konumları kaybetmek üzücü (çünkü bu onlar için yeni bir makale olacak).
  • Yinelenen sayfalarla başa çıkmanın başka bir yolu

Önemli: Sayfa geçici olarak taşınmışsa, 302 Geçici Olarak Taşındı'yı kullanın. Bu durumda sayfa birleştirme gerçekleşmez ve yönlendirmeli sayfa her zaman geri yüklenebilir.

Apache için Kalıcı Yönlendirme 301 (.htaccess)

Kuralları satırlardan hemen sonra eklemeniz gerekir:

RewriteBase'de RewriteEngine / # sunucu kökünden site köküne kadar tam yolu kesmek için

kuralların kendisi normal ifadeler kullanılarak belirtilir, sözdizimini hatırlayın:

  • Bir desende karakter gruplarını veya "etiketleri" belirtmek için meta karakterler:
    • ^ - satır başlangıç ​​işareti,
    • $ - satır sonu işaretçisi,
    • ! - inkar,
    • \ - eğik çizgiden kaçmak, aşağıdaki meta karakteri normal bir karakter olarak düşünmenize izin verir,
    • . - nokta, herhangi bir karakteri belirtir, ancak yalnızca birini,
    • () - gruplama.
  • Değiştiriciler, normal karakterlerden, meta karakterlerden veya bunların gruplarından sonra yerleştirilir:
    • ? - karakter 0 veya 1 kez tekrarlanır,
    • * - 0'dan 65536'ya kadar tekrar eder,
    • + - 1'den 65536'ya kadar tekrar eder.
  • Bayraklar, bu kural için ek seçenekleri tanımlar:
    • NC - (nocase) büyük/küçük harf kontrolünü devre dışı bırakır.
    • R - (yönlendirme) dönüştürme işlemini durdurur ve sonucu, verilen sayfaya yönlendirme olarak istemci tarayıcısına döndürür (302, TAŞINMIŞ GEÇİCİ).
      Bu bayrakla, farklı bir sonuç kodu belirtebilirsiniz, örneğin R=301, 301 (KALICI OLARAK TAŞINDI) koduyla bir yönlendirme döndürür. Tahmin edebileceğiniz gibi, tam da ihtiyacımız olan şey bu.
    • L - (son) dönüştürme işlemini durdurur ve mevcut bağlantı nihai olarak kabul edilir.

En yaygın durumları düşünün:

RewriteCond %(HTTP_HOST) ^www\.(.*) RewriteRule ^(.*)$ http://%1/$1 RewriteCond, eşleştirilirse RewriteRule'u yürütecek bir koşulu belirtir.

index.php'den (html) ana sayfaya yönlendirme

RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.(php|html|htm)\ HTTP/ RewriteRule ^(.*)index\.(php|html|htm)$ $1

Site yapısını değiştirirken yönlendir

RewriteRule ^post/category/(.*)$ blog/category/$1 RewriteRule ^post/(.*)$ blog/post/$1

PHP'de Kalıcı Yönlendirme 301

Tarayıcıya, istediği sayfadan http://site.ru adresine yönlendirme yapması gerektiğini söylemek için aşağıdaki komutları çalıştırın:

Header("HTTP/1.1 301 Kalıcı Olarak Taşındı"); header("Yer: http://site.ru"); çıkış();

nginx için Kalıcı Yönlendirme 301

Yönlendirme kuralları sunucu bölümünde açıklanmıştır.

www.site.ru'dan site.ru'ya yönlendirme

sunucu (dinle 80; sunucu_adı www.site.ru; yeniden yaz ^ http://site.ru$request_uri? kalıcı; )

veya tüm siteler için genel bir kural:

Sunucu ( server_name ~^(?! www\.); yeniden yaz ^ http://www.$host$request_uri kalıcı; )

site.ru'dan www.site.ru'ya yönlendirme

sunucu (dinle 80; sunucu_adı site.ru; yeniden yaz ^ http://www.site.ru$request_uri? kalıcı; )

index.php'den ana sayfaya yönlendirme

konum = /index.php ( if ($request_uri = /index.php) ( yeniden yaz ^ http://$host? kalıcı;#301 yönlendirme ) fastcgi_pass unix:/tmp/fastcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_params içerir; )
UCP Hile Karşıtı- sunucuyu vicdansız oyunculardan korumak için ücretsiz hile karşıtı istemci-sunucu programı.

» Şimdi UCP sunucusundan gelen veriler "Monitör" bölümünde siteye gönderilecek
» Yeni cvar ucp_monitor eklendi
» HL1. Geliştirilmiş hileye karşı koruma sistemi
» HL2. En son CSS sürümü için geliştirilmiş destek
» HL2. Deathmatch mod desteği
» HL2. binkw32.dll'nin otomatik olarak değiştirilmesi

yetenekler:

» Oyun dosyalarının değiştirilmesine ve değiştirilmesine karşı koruma
» Oyun sürecinin başlamasından ve değişmesinden korunma
» Komut dosyası hilelerinin kullanımına karşı koruma
» Benzersiz PC kimliğine göre sistemi yasakla
» İstemci bölümünün yarı otomatik kurulumu
» Oyunların buharlı ve buharsız sürümleri için destek
» Oyunculardan ekran görüntüsü alabilme
» Hızlı sorun giderme için hata ayıklama modu

Desteklenen oyunlar:

" Yarım hayat
» Koşul Sıfır
» Karşı Saldırı 1.6
" Yenilgi günü
» Adrenalin Oyuncular
» Team Fortress Klasik
" Counter Strike kaynağı
» MU Çevrimiçi
» Ragnarok Çevrimiçi

İstemci tarafını yükleme:

1. Yükleyiciyi çalıştırın, anladığınız bir dil seçin ve "İleri"ye tıklayın.
2. Lisans koşullarını kabul edin ve "İleri"ye tıklayın
3. "Gözat"a tıklayın ve hl.exe dosyasını seçin, ardından "Aç"a tıklayın
4. Bir oyun türü seçin ve bir anahtar eklemeyi unutmayın -buhar Oyunun buhar versiyonuna veya 33 veya daha yüksek bir yamaya sahipseniz (bu yapı 4156'dır, yapı numarasını öğrenmek için komutu oyun konsoluna yazmanız yeterlidir) versiyon )


Anahtar değerler:

-buhar- oyunun Steam sürümü için veya yama 33 veya üzeri ise gereklidir
-noforcemparms- Windows'tan fare düğmesi ayarlarını kullanır
-noforcemaccel- Windows'tan fare hızlandırma ayarlarını kullanır
-noforcemspd- Windows'tan fare hızı ayarlarını kullanır
-frekans- oyunu başlatırken belirtilen monitör frekansını ayarlayacaktır (LCD için işe yaramaz)
-w- monitör çözünürlük genişliği (ör. -w 800 -h 600 set 800x600)

işaretini kaldırmadıysanız "Masaüstünde kısayollarla bir dizin oluşturun" , kurulumdan sonra, masaüstünüzde Ultra Core Protector dizini içeriğiyle birlikte görünecektir:

ucp.log- hata kodlarını ve bilgisayarın yapılandırması hakkında bilgileri içeren ana dosya.

ucp.ini- oyun başlatma ayarları dosyası.


Öncelik=2- oyun süreci için öncelik modu:
düşük - 1
orta - 2
yüksek - 3
gerçek zamanlı - 4
ortalamanın altında - 5
ortalamanın üzerinde - 6

Oyun=Counter Strike- oyun türü (Half-Life, Counter-Strike, Condition-Zero, Yenilgi Günü, Team Fortress, Counter-Strike Source)

dil=1- hataların görüntüleneceği dil (0 - İngilizce, 1 - Rusça)

Parametreler=-nojoy -nomaster -nointro - oyun başlatma seçenekleri, oyun başlatma seçeneklerini ayarlamak için kısayol özelliğinde belirtilmelidir "Masaüstü\Ultra Çekirdek Koruyucu\Counter-Strike" .

ucp.dbg- hata ayıklama modunda anti-hile başlatılırken bilgilerin kaydedileceği dosya.

Hata ayıklama modu- sorunları belirlemek için hile önleme modunun hata ayıklama modu.

Counter Strike- bundan böyle anti-cheat ile oyuna başlamak için bu kısayolu kullanın.

Oyunların lisanslı sürümlerine yüklemek için dizini belirtmelisiniz. "steam\steamapps\\counterstrike\", ve hile önlemeye başlamadan önce steam'i başlatmalısınız.

HL1 için kurulum:

» Anti-cheat'ın çalışması için AMX Mod X'in en son sürümü sunucuda kurulu olmalıdır.
» Kopyala ucp.amxx dizine eklentiler/amxmodx/eklentiler/
" addons/amxmodx/configs/plugins.ini ucp.amxx satırı ekle
» Kopyala ucp.cmd oyun modunun kök dizinine, burada liblist.gam
» Kopyala banlist.txt, config.cfg, cvarlist.txt, tespitlist.txt ve filelist.txt dizine eklentiler/amxmodx/configs/ucp/
» Kopyala ucp.txt dizine eklentiler/amxmodx/veri/lang/
» Sunucuda 0.4.8 sürümünün altında kurulu bir dproto modülünüz varsa, hile önleme ile uyumluluk için yapılandırmasında gereklidir. dproto.cfg dize bul ValidInfoFields_Motoru ve satırın sonuna ekleyin \*ucp_id

HL2 için kurulum:

» Anti-cheat'ın sunucuda çalışabilmesi için en son sürüm yüklü olmalıdır.
» Kopyala ucp.smx dizine eklentiler/sourcemod/eklentiler/
» Kopyala ucp.cmd oyun modunun kök dizinine, burada gameinfo.txt
» Kopyala banlist.txt, config.cfg, cvarlist.txt, tespitlist.txt ve dosya listesi.txt dizine cfg/ucp/
» Kopyala ucp.phrases.txt dizine eklentiler/sourcemod/translations/

Not:

» Steam istemcilerinin sunucuya girebilmesi için, VAC'yi devre dışı bırak, bunun için anahtarı eklemeniz gerekir -güvensiz sunucu tarafı başlangıç ​​satırına.
» Anti-cheat olmadan giriş yapan oyuncular için anti-cheat'ı otomatik olarak yüklemek ve çalıştırmak için, satırı eklemeniz gerekir.
Düzenlemek esasta motd.txt sunucu kısmı. Oyuncu bağlantıya tıkladıktan sonra Düzenlemek, oyun boşalacak ve hile karşıtı aracılığıyla çalışacaktır. Oyuna anti-cheat ile başlamak için oyunun kök dizinindeki ucp.exe dosyasından oyunu başlatmanız gerektiği konusunda da oyuncuları uyarmalısınız.

Dosya Amaçları:

yapılandırma.cfg- hile karşıtı yapılandırma dosyası.
banlist.txt- yasaklı kullanıcıların tanımlayıcıları.
ucp.cmd- tanımlama ve otomatik güncelleme için kullanılan mevcut istemci bölümünün orijinal dosyası.
dosya listesi.txt- sunucudakilerle kontrol edilecek dosyaların listesi. 100 satırdan fazla değil.
cvarlist.txt- değerleri zorlanan cvarların listesi. 50 satırdan fazla değil. (Counter-Strike için varsayılan cvar listesi). (Yalnızca HL1 için)
ucp.txt- HL1 için farklı dillerde sunucu mesajları.
ucp.phrases.txt- HL2 için farklı dillerde sunucu mesajları.
tespit listesi.txt- istemci tarafında istenmeyen yazılım imzalarının listesi. 50 satırdan fazla değil. Sözdizimi:

Arama Tipi:

[P]- işlem adına göre arama
[W]- pencere sınıfına göre arama
[D]- sürücü adına göre arama

Hareketler:

[M]- mesajı göster
[K]- boşaltma işlemi
[B]-bsod

Örnek:

[W][K]viral
[W][B]ollydbg
[D][M]ntice.sys SoftIce'ı kapatmanız ve bilgisayarı yeniden başlatmanız gerekiyor

Takımlar:

ucp_ban - benzersiz bir bilgisayar tanımlayıcısı ile yerel sunucudaki bir oyuncuyu yasaklar. Yasak süresi belirtilmemişse veya 0 belirtilmişse, yasak kalıcıdır.

ucp_banid - girilen tanımlayıcı tarafından yerel sunucuya bir yasak koyar. Yasak süresi belirtilmemişse veya 0 belirtilmişse, yasak kalıcıdır.

ucp_unban - girilen tanımlayıcı tarafından yerel sunucudaki yasağı kaldırır.

ucp_banlist- yasaklı tanımlayıcıların tablosunu gösterir.

ucp_banlist_file - yasaklı kullanıcı kimliklerinin depolandığı dosyanın yolu (Varsayılan "0").

ucp_version- mevcut hile karşıtı sürümü gösterir.

ucp_who- sunucudaki oyuncuların listesini gösterir.

ucp_screen - oynatıcıdan ekran görüntüsü alır ve seçilen protokolü kullanarak jpg formatında sunucuya gönderir. İkinci parametre, oyundan çıkmadan ekran görüntüsünü görüntülemek için yalnızca HTTP modunda gereklidir.

ucp_autoscreen - belirli bir zaman aralığında (saniyede) oynatıcıdan bir ekran görüntüsü alır. Minimum frekans en az 60 saniye olmalıdır (Varsayılan "0").

ucp_mode - sunucuyu yeniden başlatmadan hile karşıtı eklentiyi etkinleştirin/devre dışı bırakın (Varsayılan "1").

0 - eklenti devre dışı
1 - eklenti etkin

ucp_checkfile_mode - filelist.txt (Varsayılan "1") dosyalarını denetlemeyi etkinleştirin/devre dışı bırakın.

0 - seçenek devre dışı
1 - seçenek etkinleştirilir, orijinal olmayan dosyalar bulunduğunda onları siler ve yenisini atar
2 - seçenek etkinleştirilir, orijinal olmayan dosyalar bulunduğunda, oyunun yeniden yüklenmesi gerektiğine dair bir mesajla oyunu kaldırır

ucp_upload_mode - ekran görüntülerinin sunucuya gönderileceği protokol (Varsayılan "FTP").

FTP- dosya aktarım Protokolü
http- Üstmetin transfer protokolü
YEREL - ekran görüntülerini yerel bir sunucuya yükleyin (UCP Ekran Yükleyici eklentisi kurulmalıdır)

ucp_upload_host - Ekran görüntülerinin gönderileceği sunucunun HOST veya IP adresi (www, http:// ve ftp:// olmadan), http veya ftp sunucusu oyunun kendisiyle aynı sunucuda bulunuyorsa ve sunucunun dahili ve harici bir adresi varsa, adres yerine "+" işaretini ayarlamak daha iyidir, bu durumda ekran görüntüleri harici oyuncular sunucunun harici adresine ve dahiliden dahiliye gönderilir.

ucp_upload_port - Sunucunun PORTU.

ucp_upload_user - FTP sunucusunda tanımlama için oturum açın.

ucp_upload_pass - FTP sunucusunda tanımlama için şifre.

ucp_upload_path - ekran görüntülerinin yükleneceği dizin veya php betiği.

ucp_build - sunucuya girmesine izin verilen yapı sayısı veya sayıları (Varsayılan "0", yani seçenek devre dışıdır). Bir yapı "4156" veya birkaç "3779;3939;3248;3266" belirtebilirsiniz. Anti-cheat aşağıdaki yapıları tanır:

2834, 3147, 3210, 3248, 3266, 3329, 3382, 3647, 3779, 3939, 4156, 4381, 4554
3048, 3152, 3264, 3224, 3698, 3945, 4044, 4248

ucp_cpurl - sunucuya bağlanırken içerik barındırma tarafından sağlanan: alanında banner'ınızı gösterme yeteneği (Varsayılan "0", yani seçenek devre dışıdır). Bir html dosyası oluşturmanız gerekiyor, örneğin cs.html, buraya aşağıdaki kodu yazın:







burada cs.jpg, 340x56 boyutlarındaki banner'ınızdır. Ardından cs.html , cs.jpg'yi http sunucunuza yükleyin ve burada belirtin http://adresiniz/cs.html

ucp_detect_mode - oynatıcı tarafında istenmeyen yazılımların taranmasını etkinleştirme/devre dışı bırakma (Varsayılan "1").

0 - kontrol devre dışı
1 - etkin olup olmadığını kontrol edin

ucp_detect_time - oynatıcının oturum açmasının başlangıcından itibaren istenmeyen yazılımları taramak için saniye cinsinden aralık (Varsayılan "0", yani yalnızca sunucuya girerken taranır).

ucp_link - bir kick mesajı gönderildiğinde gösterilecek olan antichat bağlantısı.

ucp_redirect_mode - hile koruması olmadan oturum açan oyuncuları yeniden yönlendirme işlevini etkinleştirme/devre dışı bırakma (Varsayılan "0", yani işlev devre dışıdır).

0 - yönlendirme devre dışı
1 - yönlendirme etkin

ucp_redirect_wan - İnternetten gelen hile karşıtı olmayan oyuncuların yönlendirileceği sunucunun harici adresi.

ucp_redirect_lan - Ağın içinden gelen hile karşıtı olmayan oyuncuların yönlendirileceği sunucunun yerel adresi.
soket_hz .

» Yükleme Ekranları - http sunucusunda ekran görüntüleri almak için basit php betiği.

» ATAC + UCP - benzersiz bir UCP tanımlayıcısı tarafından cezalandırılmak üzere "takımlarındaki oyuncuların saldırılarının kontrolü" entegre bir eklenti.

.htaccess yapılandırma dosyası, Apache web sunucuları için yapılandırmadır. Çoğu ana bilgisayar bu sunucu üzerinden çalışır, bu nedenle bu dosya her sitede bulunur. Web yöneticileri, kendi değişikliklerini yaparak çalışmalarını kısmen yönetebilir. Bu yazımızda sunucuda değiştirilebilecek yönergelere ve kurallara bakacağız.

En önemli .htaccess dosyası sitenin kökünde bulunur:

Eylemleri, geçerli dizine ve tüm alt dizinlere uygulanır. Şunlar. site sahipleri, tüm sunucunun çalışmasına müdahale etmeden yalnızca projelerinin çalışmasını etkileme fırsatına sahiptir. Bu dosya eksikse, herhangi bir not defteri kullanılarak oluşturulabilir. Ana şey, dosya adının ".htaccess" olması gerektiğidir - .txt, .doc vb. biçimler olmadan.

.htaccess dosyası aracılığıyla, 301 yönlendirmeleri çoğunlukla sunucu düzeyinde kurulur, bu da yeni bir sayfaya geçme sürecini büyük ölçüde hızlandırır, çünkü. ara sayfa yüklemeye gerek yok. Ayrıca, 404 hatasını hangi dosyanın işleyeceğini de belirtir.

Biraz daha aşağıda, .htaccess üzerinden yönlendirmeler için tüm yaygın seçeneklere bakacağız, ancak önce seçenekler ve kurallar hakkında bilgi sahibi olalım.

Yönlendirmelerle çalışabilmek için ReWriteEngine modülünü etkinleştirmeniz gerekir. Bunu yapmak için iki satır kod yazmanız gerekir (tercihen .htaccess dosyasının en üstüne):

Seçenekler +FollowSymLinks RewriteEngine Açık

Mod_write yönergeleriyle çalışabilmeniz için bu satırları .htaccess dosyanızın en üstüne yerleştirin.

Barındırma ayrıca mod_alias modüllerini etkinleştirmiş olmalıdır (Redirect, RedirectPermanent ve RedirectMatch'i desteklemek için).

1. Yönlendirme, RewriteRule ve RewriteCond kuralları

1.1. Yönlendirme yönergesi

Yönlendirme sözdizimi:

Yönlendir / nereden http://where_full_adresi

Yönlendirme, bir sayfadan diğerine doğrudan yönlendirme ayarlar.

Durumda yönlendirme kodunu yazın. İsteğe bağlı bir parametredir. Çoğu zaman, sayfanın adresinde kalıcı bir değişiklik olduğunu gösteren 301 yazarlar.

"Kimden" sayfasının, tam site adresi olmadan, ancak tam ilgili URL'nin eğik çizgiyle "/" (yani sitenin kökünden) başladığı biçimde yazılması önemlidir. Yönlendirmenin gittiği sayfa tam olarak yazılmalıdır, yani. URL sayfasının mutlak adresi (yani, alan adı ve http veya https protokolü ile).

Örneğin

Yönlendirme 301 /oldpage.php http://site/newpage.php

Farklı da yazabilirsiniz

RedirectPermanent 301 /oldpage.php http://site/newpage.php veya Redirect kalıcı 301 /oldpage.php http://site/newpage.php

1.2. RewriteRule Yönergesi

RewriteRule yönergesi geçiş kurallarını belirler. Sözdizimi aşağıdaki gibidir:

RewriteRule Model Değiştirme [kodlar]
  • Harici yönlendirmeyle, tarayıcı satırındaki adresin URL'si değişir - ""
  • Dahili ile - tarayıcı satırındaki adresin URL'sini değiştirmez - " " veya "[L] "

1.3. RewriteCond Yönergesi

RewriteCond yönergesi, RewriteRule'daki kuralların yürütüldüğü koşulları tanımlar.

Yeniden YazmaCond Karşılaştırma_DizesiŞart

Örneğin, bu terimler kullanıcının tarayıcısı, IP adresi, unvanı vb. olabilir.

1.4. RedirectMatch yönergesi

RedirectMatch yönergesi, normal ifadeler yazmanıza izin vermesiyle tek farkı Redirect'e benzer.

RedirectMatch Nereden Nereye

2. .htaccess'te 301 yönlendirme örnekleri

Makalelerde birçok .htaccess yönlendirme örneğini zaten ele aldık:

  • Site adresini değiştirin - eski alan adından yenisine yönlendirin

Burada henüz yapılmamış yönlendirmeler için seçenekler ekleyeceğiz.

2.1. Bir sayfadan diğerine yönlendirme

site.ru/cat/oldpage'den site.ru/newpage.html'ye yönlendirme

RewriteRule ^cat/eskisayfa.* /newpage.html

Veya ikinci seçenek:

Yönlendirme 301 /cat/oldpage http://www.site.com/newpage.php

2.2. Tüm .htm dosyalarından .html'ye yönlendirme

RewriteCond %(REQUEST_FILENAME) !-f RewriteRule ^(.*)\.htm$ $1.html

Veya ikinci seçenek:

RewriteRule ^(.*)\.htm$ $1.html

2.3. Tüm dizini başka bir sayfaya yönlendir

/old/ dizini ve alt dizinlerindeki herhangi bir sayfa /new.php'ye yönlendirilecektir.

RewriteRule ^eski(.*)$ /new.php

2.4. Bir URL'deki fazladan eğik çizgileri kaldırma

Örneğin, /catalog///stranica.html sayfası kullanılabilir ve açılır. Böyle bir durumdan kaçınmak ve sonsuz sayıda kopya üretmemek için aşağıdaki yönlendirmeyi yazmalısınız.

RewriteCond %(REQUEST_URI) ^(.*)//(.*)$ RewriteRule . %1/%2

2.5. Yönlendirme olmadan yeniden yaz

Sayfanın URL'sini değiştirmeden başka bir sayfa yükleyebilirsiniz. Örneğin, /news.html sayfasını yükleyelim ve adres çubuğu /news/happy adresini görüntüleyecektir.

RewriteRule ^haber/mutlu.* /news.html [L]

2.6. Ana sayfa adresinin sonuna eğik çizgi koymak

Örneğin, birçok sunucu, URL'de son eğik çizginin yazılmaması için çalışır. Örneğin, http://site.ru . Aşağıdaki kod bu sorunu çözmektedir: site http://site.ru/ adresinde açılacaktır.

RewriteCond %(REQUEST_URI) /+[^\.]+$ RewriteRule ^(.+[^/])$ %(REQUEST_URI)/

2.7. Bir URL'den bir dizin dizinini kaldırma

Örneğin, bir sayfadan yönlendirme için site.com/directoriya/page.html site.com/page.html'de aşağıdakileri yazmanız gerekir:

RewriteRule ^directoriya/(.+)$ http://site.com/$1

Veya ikinci seçenek:

Yeniden YazmaCond %(DOCUMENT_ROOT)/dizin/$1-f RewriteRule ^(.*)$ dizin/$1

2.8. GET parametrelerini yeniden yönlendir

Örneğin, /?act=page&id=2 sayfasından /page-2/ sayfasına yönlendirin

RewriteCond %(QUERY_STRING) act=sayfa RewriteCond %(QUERY_STRING) id=(\d+) RewriteRule .* /page/%1/? ]

2.9. m.site.ru sitesinin mobil versiyonuna yönlendirin

Bu örnekte, kullanıcının siteyi bir mobil cihazdan açtığı (HTTP_USER_AGENT) önce kontrol edilir, ardından site adresi m.URL ile değiştirilir.

RewriteCond %(HTTP_HOST) ^(.*)$ RewriteCond %(HTTP_USER_AGENT) (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|chtml|pda|mmp|böğürtlen|mib|symbian|kablosuz|nokia|el|mobi|telefon|cdm|upb| ses|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java |pt|pg|vox|amoi|kuş|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|dddi|moto|iphone|android) RewriteRule ^$ http://m.%1

2.10. Alt alan adından yönlendirme

Örneğin, poddomen.site.ru alt etki alanının herhangi bir sayfasından site.ru ana etki alanına yönlendirme yapalım.

RewriteCond %(HTTP_HOST) ^poddomen.site.ru$ RewriteRule ^(.*)$ http://site.ru%(REQUEST_URI)

3. htaccess ile diğer örnekler

3.1. IP adresini ve tarayıcıyı reddet

172.111.222.55 IP adresine sahip bir IE tarayıcısından bir kullanıcı için sitenin açılmasını yasaklayacağız.

RewriteCond %(HTTP_USER_AGENT) MSIE RewriteCond %(REMOTE_ADDR) ^172\.111\.222\.55$ RewriteRule ^.*$ - [F]

3.2. Belirli bir dosyayı reddet

Disable_file.html dosyasını herkes için devre dışı bırakın:

herkesten inkar

3.3. Bir ipten erişime izin ver

Erişime yalnızca 172.111.222.55 ip adresinden izin verilecektir.

sipariş reddet, tümden reddet izin ver 172.111.222.55'ten izin ver

3.4. Farklı ipten erişimi engelle

Birkaç IP adresinden siteye erişimi engelleyin 172.112.222.55, 172.113.222.55, 172.114.*.*

sipariş reddet, tüm redde izin ver 172.112.222.55'ten reddet 172.113.222.55'ten reddet 172.114.*.*

3.5. URL'yi büyük karakterlerden küçük karakterlere yönlendir

URL'deki tüm büyük harfler küçük harflere dönüştürülecektir.

RewriteRule - RewriteRule ! - RewriteRule ^([^A]*)A(.*)$ $1a$2 RewriteRule ^([^B]*)B(.*)$ $1b$2 RewriteRule ^([^C]*)C(.* )$ $1c$2 RewriteRule ^([^D]*)D(.*)$ $1d$2 RewriteRule ^([^E]*)E(.*)$ $1e$2 RewriteRule ^([^F]*) F(.*)$ $1f$2 RewriteRule ^([^G]*)G(.*)$ $1g$2 RewriteRule ^([^H]*)H(.*)$ $1h$2 RewriteRule ^([^ I]*)I(.*)$ $1i$2 RewriteRule ^([^J]*)J(.*)$ $1j$2 RewriteRule ^([^K]*)K(.*)$ $1k$2 RewriteRule ^([^L]*)L(.*)$ $1l$2 RewriteRule ^([^M]*)M(.*)$ $1m$2 RewriteRule ^([^N]*)N(.*)$ $1n$2 RewriteRule ^([^O]*)O(.*)$ $1o$2 RewriteRule ^([^P]*)P(.*)$ $1p$2 RewriteRule ^([^Q]*)Q( .*)$ $1q$2 RewriteRule ^([^R]*)R(.*)$ $1r$2 RewriteRule ^([^S]*)S(.*)$ $1s$2 RewriteRule ^([^T] *)T(.*)$ $1t$2 RewriteRule ^([^U]*)U(.*)$ $1u$2 RewriteRule ^([^V]*)V(.*)$ $1v$2 RewriteRule ^( [^W]*)W(.*)$ $1w$2 RewriteRule ^([^X]*)X(.*)$ $1x$2 RewriteRule ^([^Y]*)Y(.*)$ $1y $2 RewriteRule ^([^Z]*)Z(.*)$ $1z$2 RewriteRule - [N] RewriteCond %(ENV:HASCAPS) TRUE Rewr iteRule ^/?(.*) /$1