Puncte:0

Htaccess pentru a rescrie URL-ul cu doi parametri

drapel cn

Vreau să rescriu acest tip de URL

https://mywebsite.com/content/page.html?id=12&title=my-page-title

la

https://mywebsite.com/12/my-page-title.html

Folosind generateit.net/mod-rewrite/ am primit următoarea regulă:

RewriteEngine Pornit
RewriteRule ^([^/]*)/([^/]*)\.html$ /content/page.html?id=$1&title=$2 [L]

Dar când sunt testat pe htaccess.madewithlove.com/ obțin asta:

Noua adresă URL este https://mywebsite.com/content/page.html?id=content&title=page
cat15ets avatar
drapel cn
Aceasta a fost regula dată de un generator de reguli de rescriere. De asemenea, am încercat diferite reguli fără niciun rezultat. Am încercat să înțeleg cum funcționează regulile de rescriere, dar nu am găsit niciun tutorial util pentru mine.Toți par să rateze punctele cheie în explicarea modului în care funcționează, sau este doar o problemă cu logica mea...
Tilman Schmidt avatar
drapel bd
(a) M-am uitat la site-ul generator pe care l-ați numit. Ai interpretat greșit ceea ce își propune să facă. Când se spune „Transformați URL-urile dinamice în URL-uri statice prietenoase cu motoarele de căutare”, înseamnă că din punctul de vedere al vizitatorului. (b) Funcționarea unei reguli de rescrire este pur și simplu: încercați să potriviți URL-ul de intrare cu expresia regulată dată ca prim argument la instrucțiunea `RewriteRule` și, dacă o face, înlocuiți-o cu șirul dat ca al doilea argument.
cat15ets avatar
drapel cn
Nu înțeleg ce spui că am greșit. Accesați: https://www.generateit.net/mod-rewrite/ , puneți https://mywebsite.com/content/page.html?id=12&title=my-page-title în câmpul URL și faceți clic pe RESCRIERE URL
cat15ets avatar
drapel cn
Generatorul de rescriere de mod poate fi folosit pentru a transforma adrese URL dinamice în URL-uri statice prietenoase cu motoarele de căutare. Adresele URL statice se clasează de obicei mai bine în motoarele de căutare decât adresele URL dinamice complexe lungi, cu mulți parametri, sunt mai ușor de indexat în primul rând și sunt, de asemenea, mai prietenoase pentru utilizatorul final. Modulul apache mod_rewrite convertește URL-urile dintr-un anumit format într-un alt format și poate fi foarte util pentru a ajuta un site cu conținut dinamic să fie indexat. Folosind acest instrument, puteți transforma adrese URL dinamice lungi în adrese URL statice scurte.
cat15ets avatar
drapel cn
Nu știu ce nu am înțeles din asta. Vreau o **REGULĂ** care să transforme **adrese URL dinamice lungi** în **adrese URL statice scurte**
Tilman Schmidt avatar
drapel bd
Definiți ce înțelegeți prin „transforma în”.
cat15ets avatar
drapel cn
De pe site-ul lor: ** Folosind acest instrument, puteți transforma adrese URL dinamice lungi în adrese URL statice scurte. ** Transformă-te, transformă-te în, rescrie, ia-l cum vrei. Poate sunt prea prost pentru asta sau sunt alte lucruri în joc aici...
Tilman Schmidt avatar
drapel bd
Să [continuăm această discuție în chat](https://chat.stackexchange.com/rooms/133536/discussion-between-tilman-schmidt-and-cat15ets).
Puncte:1
drapel bd

Termenul „rescriere” se referă la un proces care are drept al său intrare URL-ul solicitat de vizitatorul site-ului dvs. și ca acesta ieșire URL-ul transmis către CMS-ul dvs. pentru a produce pagina solicitată.

Serviciul la https://www.generateit.net/mod-rewrite/ generează o regulă de rescriere care permite accesul la paginile dvs. prin adresele URL ale formularului

https://mywebsite.com/12/my-page-title.html

chiar dacă sistemul de bază așteaptă adrese URL ale formularului

https://mywebsite.com/content/page.html?id=12&title=my-page-title

Face asta prin rescriere cel fost la din urmă, care este exact ceea ce face regula de rescriere citată în întrebarea dvs.

Pentru a testa asta cu serviciul la https://htaccess.madewithlove.com/, trebuie să intri

https://mywebsite.com/12/my-page-title.html

în câmpul etichetat „Completați adresa URL la care aplicați regulile”. S-ar părea că ai intrat în rescriere rezultat acolo in schimb.

cat15ets avatar
drapel cn
Și ce regulă trebuie să folosesc în htaccess pentru a obține **https://mywebsite.com/12/my-page-title.html** de la **https://mywebsite.com/content/page.html?id =12&title=my-page-title**
drapel kz
@cat15ets Nu faci asta în `.htaccess`. Trebuie să modificați manual (sau în CMS) adresele URL din sursa HTML pentru a avea forma „example.com/12/my-page-title.html”. Cu toate acestea, spunând acestea, puteți implementa (opțional) o redirecționare externă pentru a converti solicitările terță parte din `/content/page.html?id=12&title=my-page-title` la adresa URL canonică dorită (de exemplu, `/12 /my-page-title.html`) - dar aceasta este doar pentru SEO, dacă ați modificat o structură URL existentă care a fost indexată/la care a fost legată. Acest lucru nu este necesar pentru ca site-ul dvs. să funcționeze cu adresele URL canonice „drăguțe” dorite.
Puncte:0
drapel cn

Îți mulțumesc RavinderSingh13, de la StackOverflow, pentru că m-ai ajutat cu codul.

A intoarce

https://mywebsite.com/pages/article.html?id=1&title=Title-Goes-Here

în

https://mywebsite.com/pages/article/1/Title-Goes-Here

Utilizare

RewriteEngine ON
##Redirecționare externă în regulile browserului aici....
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{THE_REQUEST} \s/([^/]*)/([^.]*)\.html\?id=([^&]*)&title=(\S+)\s [NC]
RewriteRule ^ /%1/%2/%3/%4? [R=301,L]

##Rescrierea internă în regulile fișierului html aici....
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/?$ $1/$2.html?id=$3&title=$4 [QSA ,NC,L]

De asemenea, după elementul cap, a trebuit să pun:

<base href="/" />

Dacă aveți atricle.html în folderul principal, cu htaccess puteți utiliza și:

RewriteEngine activat
RewriteRule ^articol/([0-9]+)/([0-9a-zA-Z_-]+)$ article.html?id=$1&title=$2 [NC,L] 

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.