Es migrēju vecāku vietni uz jaunāku, kurā tiek izmantots Drupal. Kā daļu no tā es mēģinu iestatīt 301 novirzīšanu uz jaunajām lapām, bet man rodas negaidīta uzvedība. Es savam .htaccess failam pievienoju šādu rindu:

redirect 301 /redirect.html http://www.example.com/newpage 

Diemžēl notiek tas, ka mani aizved uz:

http://www.example.com/newpage?q=redirect.html 

Kas, protams, netiek ielādēts pareizi. Vai ir kādas domas?

  • Man ir jautājums par jūsu jautājumu. Vai tīrie URL ir pareizi konfigurēti?
  • Tīrie URL pareizi konfigurēti.
  • Tikai iepriekš minētā direktīva nebūtu novedusi pie novirzīšanas, tāpēc, iespējams, ir bijis konflikts. Jo īpaši tāpēc, ka Drupal izmanto mod_rewrite, un iepriekš minētais ir mod_alias direktīva. Nekad nevajadzētu jaukt novirzīšanu no abiem moduļiem.

Tāpēc pēc nelielas meklēšanas es atradu atbildi šeit. Tas ir līdzīgs danlefree's, bet nedaudz atšķirīgs.

 RewriteEngine on RewriteBase / # custom redirects RewriteRule ^redirect\.html$ http://www.mysite.com/newpage [R=301,L] # end custom redirects ...  

Šķiet, ka tas paveic darbu.

  • Tas pats! Bet es joprojām domāju, ka jums vajadzētu apskatīt manu atbildi;)
  • 1 Tā vietā, lai aplauztu Apache līmenī, apsveriet iespēju izmantot atbilstošu Drupal moduli - tas dod jums daudz lielāku jaudu un elastību.

Aizmirsti .htaccess. Izmantojiet globālo novirzīšanu. Tas dod jums sekojošo:

  1. Pārbauda aizstājvārda pašreizējo URL un veic 301 novirzīšanu uz to, ja tas netiek izmantots.
  2. Pārbauda beigu slīpsvītras pašreizējo URL, noņem to, ja tāds ir, un atkārto 1. pārbaudi ar jauno pieprasījumu.
  3. Pārbauda piekļuvi vietrādim URL. Ja lietotājam nav piekļuves ceļam, novirzīšana netiek veikta. Tas palīdz izvairīties no privātu aizstājēju mezglu atklāšanas.

Tas nedaudz atvieglo jūsu vietnes migrēšanu un, iespējams, pats svarīgākais, tāpēc ir viegli meklēt, kur tieši tiek novirzīts. (tā kā tam ir lietotāja saskarne)

Bonuss (iedomājieties, ka šeit parādās pops)

Šķiet, ka jūs izveidojat kaut ko līdzīgu tīriem URL. Es domāju, ka jūs varētu interesēt patauto.

  • Labs ieteikums - es līdzīgu iemeslu dēļ gatavojos ieteikt ceļa novirzīšanu.
  • Es to izpētīju, un tas bija pretrunā ar mūsu instalēto galerijas moduli.

Jūsu citi pārrakstīšanas noteikumi traucē.

Tā vietā izmēģiniet šādas darbības:

RewriteEngine on RewriteRule ^/redirect\.html$ http://www.mysite.com/newpage [L,R=301] # ... existing rewrites 
  • Diemžēl tas, šķiet, man nedarbojas.
  • Tas būtu darbojies servera konfigurācijā. Tomēr direktorijā .htaccess failos direktorija prefikss tiek noņemts no URL ceļa, kas atbilst RewriteRule modeli. Tātad, slīpsvītra (/) vienkārši jānoņem no ^/redirect\.html$ kļūt ^redirect\.html$.

Mēs šim nolūkam izmantojām ceļa novirzīšanas moduli. Tas nevar tikt galā ar visām jaudīgajām lietām, ko spēj Mod_rewrite, taču tas mums ir paveicis patiešām jauku darbu, saglabājot vecos URL.

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

noderīga informācija