Adobe After Effects pamati - kameras kratīšana

Es vēlos padarīt savas vietnes lapas draudzīgākas meklētājprogrammām, pārvēršot vaicājuma virknes jēgpilna izskata lapu nosaukumos.

Piemēram, man ir šī lapa:

/search.php?c=18 

Es gribu, lai tas izskatās šādi:

/doctors/MainCategoryName-18/ 

Dažreiz ir otra vaicājuma virkne, tāpēc tai vajadzētu strādāt tikai ar vienu vai abiem. Piemēram:

/search.php?c=18&s=217 

Vajadzētu izskatīties

/doctors/MainCategoryName-18/SubCatrogyrName-217/ 

Lūk, ko es esmu izmēģinājis līdz šim, bet es to nevaru panākt.

RewriteRule ^search.php?c\=(.*)* /doctors/general-$1 [NC,R=301,L] RewriteRule ^doctors/[^?/]*-(\d+)\ /search.php?c=$1&s=$2 [QSA 

Liels paldies par jūsu palīdzību,

izmēģiniet šo:

RewriteEngine On RewriteRule ^doctors\/[\w\-]+\-(\d+)\/?$ search.php?c=$1 [L,QSA] RewriteRule ^doctors\/[\w\-]+\-(\d+)\/[\w\-]+\-(\d+)\/?$ search.php?c=$1&s=$2 [L,QSA] 
  • Hei, paldies, ka tas izdevās lieliski. Bet ko tad, ja kāds ieraksta mapē /search.php?s=523, vai es varu likt tam automātiski novirzīt viņu uz: / ārstiem / Kardioloģija-112 /
  • Tas darbojas patiešām labi. Bet ko tad, ja kategorijas nosaukumam ir 2 šādas daļas: / ārsti / artrīta speciālisti-111 / Dažiem varētu būt pat 3 vai 4 vārdi kā daļa no kategorijas nosaukuma. SEO iemeslu dēļ es vēlētos, lai nosaukums tiktu atdalīts ar domuzīmi.
  • Es esmu rediģējis regexp, lai iekļautu arī domuzīmes, lai jūs varētu ievietot tik daudz vārdu, cik vēlaties. un atbilde uz jūsu pirmo komentāru - jā, jūs varat, bet jums nevajadzētu - draudzīgs URL nedomā strādāt šajā virzienā ... un tas arī nevar "uzminēt" kategorijas nosaukumu htaccess - ja vēlaties tas notiek - jums tas ir jāieraksta meklētājā search.php

Pievienojiet šo savam .htaccess fails, kas atrodas jūsu DocumentRoot.

RewriteEngine On RewriteBase / #To prevent Looping RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteRule ^ - [L] #To redirect the converted URL to actual URL RewriteRule ^doctors/MainCategoryName-(\d+)/$ serach.php?c=$1 [L] RewriteRule ^doctors/MainCategoryName-(\d+)/SubCatrogyrName-(\d+)/$ serach.php?c=$1&s=$2 [L] #To convert your URL RewriteCond %{QUERY_STRING} ^c=(\d+)$ [NC] RewriteRule ^serach.php /doctors/MainCategoryName-%1/? [L,R=301] RewriteCond %{QUERY_STRING} ^c=(\d+)&s=(\d+)$ [NC] RewriteRule ^serach.php /doctors/MainCategoryName-%1/SubCatrogyrName-%2/? [L,R=301] 
  • izmantojot RewriteCond %{ENV:REDIRECT_STATUS} 200 ir ļoti bīstama, jo pat tad, ja URL ir novirzīšana, jūs joprojām varat piemērot pārrakstīšanas kārtulas. Ja es būtu tu, es izvairītos no šādas lietas. Varbūt, lai izvairītos no cilpas, pirms "potenciālā cilpas noteikšanas" pārbaudiet, vai statuss nav 200: RewriteCond %{ENV:REDIRECT_STATUS} !200
  • @OlivierPons Jā, es piekrītu! Bet, es to lietoju uzmanīgi. Kā jūs teicāt, tikai tad, kad nav nepieciešams atkārtoti piemērot noteikumus.

strādāja par jums: Charles Robertson | Vēlies ar mums sazināties?