Puncte:1

Cum să eliminați sufixul „.com” din variabila nume de gazdă folosind .htaccess

drapel ws

Încerc să creez o serie unică de redirecționări pe un server web Apache (versiunea de server: Apache/2.2.15). Folosind .htaccess sau module Apache suplimentare, trebuie să analizez complet adresele URL solicitate pentru a extrage nume de gazdă fără sufixul standard .com.

Exemplu: am nevoie nume de vânzător de la numele gazdei vendorname.com.

Afacerea pe care o susțin lucrează cu furnizori terți și a creat domenii unice de nivel superior pentru fiecare dintre ei, care indică un subdirector specific furnizorului în rădăcina documentului a serverului web.

Exemplu: vendorname.com/logo.jpg încarcă un activ care poate fi accesat și la parentbusinessdomain.com/vendorname/logo.jpg

Această convenție a fost pusă în aplicare de către afaceri acum 10 sau 15 ani și există mulți, mulți furnizori. Ceea ce compania nu a luat în considerare a fost necesitatea de a sprijini implementarea HTTPS/SSL pentru fiecare domeniu unic. Dacă ar fi folosit subdomenii precum vendorname.parentbusinessdomain.com, atunci aceasta ar fi fost o problemă. În continuare, dorim să renunțăm la această convenție și pur și simplu să găzduim imagini și alte active din https://parentbusinessdomain.com.

Problema cu care mă confrunt continuu este că nu pare să existe o operațiune standard de șir Apache sau o variabilă pe partea serverului care să reprezinte sau să extragă numele de gazdă fără șirul specific „.com”. Acest tip de extracție de șiruri este fezabilă cu PHP backend sau Javascript frontend, dar se pare că sunt limitat cu ceea ce poate face .htaccess în sine.

Exemplu similar cu funcția Javascript personalizată: https://stackoverflow.com/a/16934798/602514

parseURL('https://www.facebook.com/100003379429021_356001651189146');

Rezultat:

Obiect {
domeniu: "www.facebook.com",
gazdă: „facebook”,
cale: „100003379429021_356001651189146”,
protocol: "https",
subdomeniu: "www",
tld: "com"
}

Neprevăzutul va fi să explorezi rescrierea/redirecționările URL în cadrul aplicației web moștenite, dar în speranța că ar putea exista o soluție mai elegantă din perspectiva infrastructurii.

drapel kz
Sunt toate domeniile un singur TLD ca exemplele dvs. `.com` etc.? Aveți vreun STLD precum `.co.uk` etc.?
drapel kz
Care este adresa URL la care vă conectați de fapt?
sparecycle avatar
drapel ws
@MrWhite aceste domenii de furnizori, toate .com, nu au vrut să complice lucrurile, sugerând că sunt tipuri variate de domenii.În ceea ce privește domeniul de destinație, dacă am putea spune doar domeniul țintă este example.com, care ar păstra anonimatul clientului meu. Mulțumesc anticipat!
drapel kz
_Aparte:_ „Acest tip de extracție de șiruri este fezabilă cu backend PHP” - De fapt, ați face acest lucru aproape în același mod în orice limbă (PHP, JS sau Apache); examinând antetul „Gazdă”. Apache are toate instrumentele. Nu ați folosi o funcție JS ca _that_ dacă examinați _cererea curentă_.
Puncte:0
drapel kz

Puteți face ceva de genul următor în partea de sus a ta .htaccess fișier folosind mod_rewrite (deși acest lucru va funcționa la fel de bine direct în configurația serverului):

RewriteEngine Pornit

RewriteCond %{HTTP_HOST} !^example\.com
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+) [NC]
RewriteRule ^ https://example.com/%1%{REQUEST_URI} [R=302,L]

Aceasta ar redirecționa <vendorname>.com/<anything> la https://example.com/<nume furnizor>/<orice>. Unde <anything> poate fi literal orice cale URL. Orice șir de interogare este, de asemenea, păstrat în redirecționare.

exemplu.com este „domeniul afacerii părinte”. Primul condiție pur și simplu verifică dacă cererea nu este deja pentru domeniul țintă.

The %1 backreference se potrivește cu „numele furnizorului”, capturat din numele de gazdă solicitat vendorname.com în cele precedente CondPattern. Acest lucru permite un subdomeniu opțional www. Ai menționat că tocmai ai .com domenii, deși acest lucru ar funcționa cu orice TLD (cu mai multe niveluri), presupunând doar că nu există alte subdomenii (cu excepția unui www opțional).

Testați mai întâi cu redirecționări 302 (temporare) și treceți doar la un 301 (permanent) - dacă aceasta este intenția - după ce ați confirmat că funcționează conform intenției.

Ceea ce compania nu a luat în considerare a fost necesitatea de a sprijini implementarea HTTPS/SSL pentru fiecare domeniu unic.

Sunteți doar curios cum rezolvă redirecționarea asta? Redirecționarea este doar pentru a păstra SEO și orice backlink-uri terță parte care sunt către adresele URL ale formularului http://vendorname.com/logo.jpg (doar HTTP)? (Deși în mod normal nu te-ai aștepta la backlink-uri logo.jpg și acest exemplu special nu ajută cu adevărat la SEO?)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.