Redirect .htaccess: boshqa domenga yo'naltirish va boshqa sahifaga yo'naltirish

  1. Redirect .htaccess: doimiy qayta yo'naltirish, 301
  2. Wwwga yo'naltirishni o'rnatish (yoki www)
  3. Qanday qilib .htaccess yaratish
  4. .Htaccess fayli ishlamaydi
  5. Nginx ning .htaccess ning analoglari bormi?
  6. Nashriyotchi

Yaxshi yakshanba!

Forumlarda ko'pincha .htaccess - Apache web server konfiguratsion faylini topishingiz mumkin. Asosiy qoqinish bloki, bu rivojlanish oxirgi foydalanuvchi uchun qulay konfiguratsiya vazifasini (tarqatish katakchalari yordamida ingl. O'rnatishlarni ochish uchun ochilgan ro'yxatlar va hokazolarni o'z ichiga olmaydi) emas, lekin server ma'murlari ushbu vazifani "mana" (Linux jamoasi - odamdan - ishlab chiquvchilardan tez o'rganish yoki mutaxassislardan mutaxassislarga).

Ko'pgina hollarda oddiy manipulyatsiyalar talab qilinadi: boshqa saytga shartsiz qayta yo'naltirish yoki boshqa joydan boshqa joyga yo'naltirish (masalan, bo'limning sanasi o'zgargan bo'lsa). Va har bir kishi hech qanday muammo yo'qligiga ishonishdan boshlaydi va hatto Internetda echim izlash va forumni qidirib topish ham foydasiz. Keling, bu muammolarning aslida nima ekanini bilib olaylik.

Redirect .htaccess: doimiy qayta yo'naltirish, 301

Bu narsa turli nomlar mavjud. Neponyatki, ehtimol, bu raqamga sabab bo'lishi mumkin - nima uchun 301? Mantiqiy HTTP protokoli o'ziga xos bo'lib, mijozning istaklarini muayyan vaziyat kodi bilan ta'minlaydi. 404 topilmadi kod deyarli hamma uchun ma'lum. 200 OK kodi deyarli noma'lum, ammo bu har bir narsani tartibga soladi va hujjat brauzerda ko'rsatiladi. Biroq 301 kodi doimiy ravishda ko'chirildi, hujjat nihoyat yangi manzilga ko'chirilganligini bildiradi. Umumiy javob berish havzasi - 3xx: Redirection - tayinlangan bo'lsa-da, bu ko'pincha qayta yo'naltirish deb ataladi.

Apache-da yo'naltirishlar uchun bir nechta variant mavjud. Mod_rewrite moduli qayta yo'naltirishlar bilan ishlash uchun ajoyib mexanizmni taqdim etadi va kelajakda uni misollarda qo'llayman. Mod_alias modulida ma'lum bir manzilda yoki muntazam ifoda bilan mos keladigan manzildan yo'naltirishlar uchun ko'rsatmalar mavjud:
Qayta yo'naltirish / http://newsite.ru/
RedirectMatch doimiy. * Http://newsite.ru/
Ammo mod_rewrite'da qayta yo'naltirish uchun qo'shimcha imkoniyatlar mavjud, shuning uchun uni ishlatish (IMHO) yaxshiroqdir.

Umuman olganda, brauzer avtomatik ravishda foydalanuvchi uchun boshqa manzilga yo'naltirilmaydigan (manzillar paneli o'zgarishi), shartsiz tashqi (foydalanuvchi uni chaqiraylik) yo'naltirishga yo'naltirish uchun, siz bunday kodni .htaccess-ga kiritishingiz mumkin:
RewriteEngine ochiq
RewriteRule. * Http://newsite.ru/ [L, R = doimiy]
Bu erda birinchi satr mod_rewrite moduli mexanizmini o'z ichiga oladi, bu manzillar bilan biror narsa qilish uchun ruxsat etiladi. Keling, ushbu URL manzilni shartlarga muvofiq o'zgartiraylik. Ikkinchi satr konvertatsiya qoidasini bevosita belgilaydi, yuqoridagi misolda barcha so'rovlar http://newsite.ru/ga yo'naltiriladi. Bayroqlar kvadrat qavslarga joylashtiriladi: L - oxirgi (oxirgi) qoida, R - yo'naltirish turi (REDIRECT), R = kod sifatida ko'rsatilgan, bu erda kod alifbo yoki raqamli belgidir (doimiy yoki 302).

Aslida, mod_rewrite - bu juda foydali narsa, chunki bu juda ko'p motorlar CNC (Human URL Understandable) nomi bilan faol foydalanadi. Agar siz ushbu atama bilan tanish bo'lmagan bo'lsangiz, men misol bilan tushuntiraman. Maqola haqida sayt uchun bepul vosita manzili: https://a-panov.ru/2014/11/free-cms/

Ushbu URLga qarab, maqolaning 2014 yil noyabrida nashr etilganligi darhol ma'lum. Pastki qismga ega bo'lgan nomni olib tashlash - https://a-panov.ru/2014/11/ - noyabr oyidagi barcha nashrlarning ro'yxatini olamiz. Oddiy manzillar, yozing:

https://a-panov.ru/?p=389

hech qanday samimiylik yo'q. Bunday manzilni ko'rsangiz, siz u olib boradigan sahifa haqida hech narsa deya olmayapsiz.

Yangi saytning qaysi sahifasiga bog'lanishiga umuman e'tibor bermasangiz, bu usul yaxshi. Agar boshqa domenga ko'chgan bo'lsangiz, manzillarni saqlab turish paytida barcha so'rovlarni qayta yo'naltirish tavsiya etiladi. Buning uchun quyidagi kodni ishlating:
RewriteRule ^. * $ Http://newsite.ru/$0 [QSA, L, R = doimiy]
Yangi QSA bayrog'i savol belgisidan keyin adreslardagi mavjud parametrlarni ham saqlaydi . Tanish tanish misol:

https://a-panov.ru/?p=389

agar yuqoridagi kodni .htaccess-ga joylashtirsam, u holda ushbu bayroq bo'lmasdan http://newsite.ru/?p=389 manziliga qayta yo'naltirish bo'ladi.

Bundan keyin, men konvertatsiya qilishni o'z ichiga olgan ko'rsatmalarni qo'ymayman:
RewriteEngine ochiq
faqat mod_rewrite mexanizmidan foydalansangiz, ushbu ko'rsatmandan keyin barcha shartlar / konvertatsiya qilish kerak. Quyidagi satrni o'chirish uchun ishlatiladi:
RewriteEngine o'chirilgan
shunga ko'ra, har bir qoida uchun doimiy ravishda "o'zgarishlarni" ochishning hojati yo'q - bu birinchi ko'rsatmandan so'ng darhol amalga oshiriladi.

Wwwga yo'naltirishni o'rnatish (yoki www)

Bunday qayta yo'naltirishlar sayt nsite.ru va www.nsite.ru variantlarida mavjud bo'lgan holatlarda talab qilinadi, bu holda qidirish motorlari ularni takrorlashni ko'rib chiqadi va variantlardan birini tanlashi mumkin asosiy oyna , yoki qo'ng'iroqda ikkala domendan variantlar ham bo'ladi. Umuman olganda, bu saytni baholashda salbiy omil.

Bitta domen uchun variant oson. Qayta yo'naltirish www.site.ru pastki saytidan sayt.ru saytiga o'tkaziladi:
RewriteCond% {HTTP_HOST} ^ www \ .nsite \ .ru $
RewriteRule. * Http://nsite.ru/$0 [QSA, L, R = doimiy]
Bu erda RewriteCondning yangi direktivi paydo bo'ladi, bu esa qayta yo'naltirishlarning ishlashi shartini belgilaydi - RewriteRule qoidalari. Bu holda, www.nsite.ru saytiga mos keladigan domen nomi (muntazam ifodalarda, nuqta belgisi "har qanday belgi" ma'nosini bildiradi, shuning uchun uni teskari egri chiziq bilan himoyalash tavsiya etiladi).

Qayta yo'naltirish ham juda sodda:
RewriteCond% {HTTP_HOST} ^ nsite \ .ru $
RewriteRule. * Http://www.nsite.ru/$0 [QSA, L, R = doimiy]
Ikkala variant ham ishlamoqda, biroq ular kamdan-kam hollarda - har bir yangi konfiguratsiya uchun nsite.ru domenini o'zingiz bilan almashtirishingiz kerak bo'ladi. Noyob variantni yaratish mumkinmi? Oson!

Har qanday www subdomaindan yo'naltirish:
RewriteCond% {HTTP_HOST} ^ www \. (. *) $
RewriteRule. * Http: //% 1 / $ 0 [QSA, L, R = doimiy]

Subdomain-ga www:
RewriteCond% {HTTP_HOST}! Www \.
RewriteRule. * Http: //www.% {HTTP_HOST} / $ 0 [QSA, L, R = doimiy]

% {HTTP_HOST} - joriy domen

Qanday qilib .htaccess yaratish

Bunday savollar tug'iladi. Muammo shundaki, standart Explorer (grafik interfeysi uchun mas'ul bo'lgan Windows dasturi sizda nuqta bilan boshlanadigan fayllarni yaratishga imkon bermaydi (fayl yoki papkalarni ish stolida yoki oynada o'ng tugmasini bosib, yaratilgan ro'yxatidan kerakli ishni tanlash bilan). Lekin, bir chiqish yo'li bor: standart Eslatma kitoblari yozuvchisini oching, menyudan Fayl → Turli saqlash ... -ni tanlang va saqlangan faylning nomi sifatida .htaccessni tanlang - bundan keyin yaratiladi.

.Htaccess fayli ishlamaydi

Fayldan ko'rsatmalar ishlamayotgan holatlar mavjud. Bu odatda, Apache konfiguratsiyasida .htaccess qo'llab-quvvatlashining o'chirilganligi sabab bo'ladi, bu uchun direktiv javob beradi:
AllowOverride hech kim

Bu odatda tezlikni ko'paytirish uchun amalga oshiriladi - bu holda, veb-server qidiruvni amalga oshirmaydi va ajralmaydi .htaccess.

Apache serverda ishlatilmasligi ham mumkin, masalan, IIS Windows-ning asosiy "mehmoni". Tushuntirish uchun sizning mezboningiz yordamiga murojaat qiling.

Nginx ning .htaccess ning analoglari bormi?

Yana bir tez-tez so'raladigan savol. Ushbu veb-serverda bu mumkin emas. Biroq, bu odatda talab qilinmaydi. Aslida, nginx odatda frondend sifatida o'rnatiladi, ya'ni uni o'zi amalga oshiradigan yoki Apache tomonidan amalga oshiriladigan ordenga yo'naltiruvchi barcha so'rovlarni qabul qiladi va qayta ishlaydi, bu esa .htaccess yordamida ham tuzilishi mumkin.

Nashriyotchi

onlayn emas 1 kun

x64 (aka andi)

Sharhlar: 2834 Nashrlar: 394 Ro'yxatga olish: 02-04-2009Htaccess ning analoglari bormi?
Neponyatki, ehtimol, bu raqamga sabab bo'lishi mumkin - nima uchun 301?
Ru/?
Ru/?
Ru/?
Noyob variantni yaratish mumkinmi?
Htaccess ning analoglari bormi?