# Paliec mājās un palīdzi glābt dzīvības # ar mani

Man ir domēns example.com, kad kāds apmeklē šo domēnu, man automātiski jāpāradresē uz example.com/en/ un vajadzība /en/ būt mainīgā parametram lang.

RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/([^/]+)?/?$ ?lang=$1&menu_url=$2 [L] 

  • Kāds ir vērtības vērtības piemērs menu_url parametrs? Vai esat mēģinājis ieviest novirzīšanas kārtulu, kas novirza, noklikšķinot uz pamata URL?
  • Normāls URL ir example.com/index.php?lang=en&menu_url=contact Tas parasti darbojas labi. Bet man ir nepieciešams automātiski ielādēt example.com/lv/, nevis example.com. Es mēģināju novirzīt, izmantojot RedirectMatch, taču tas nedarbojas ar parametriem. example.com/lv/ ir atkarīgs no izvēlnes valodas ielādes. Tas ir viegli, man ir jāatspējo ielāde tikai example.com, man ir nepieciešams tikai example.com/en/
  • Jūsu jautājums joprojām nav skaidrs. Novirzīšana uz /en/ un ieskaitot en URL parametrā šķietami ir divi dažādi uzdevumi. Vai direktīva, kuru esat ievietojis, ir darba direktīva, lai to nokārtotu lang (un menu_url) URL parametrs (lai gan tas nav stingri pareizs, ja tāds ir)? Jums ir jārediģē jautājums, lai uzskaitītu pieprasīto URL piemērus un vēlamo mērķa URL un pamatā esošo failu sistēmas ceļu. Kādus URL savā vietnē saistāt? Piemēram, kā ir ar pieprasījumiem example.com/foo? Vai arī jūs nodarbojaties tikai ar example.com/, kā ieteikts jūsu jautājumā?

Jūsu jautājums nav skaidrs. Tomēr, lai novirzītu no example.com/ uz example.com/en/ (kā norādīts jūsu jautājumā), tad jūsu augšdaļā jums būs nepieciešams kaut kas līdzīgs šim .htaccess fails:

RewriteEngine On RewriteRule ^$ /en/ [R,L] 

Tas burtiski novirza tikai no / uz /en/. Tomēr, ja jums ir pieprasīts veidlapas URL /foo kas jāpāradresē uz /en/foo tad jums tā vietā būtu nepieciešams kaut kas līdzīgs:

RewriteRule !^en/ /en%{REQUEST_URI} [R,L] 

Es pieņemu, ka jūs jau izveidojat saiti ar /en/... lietojat Apache 2.4 (atšķirībā no 2.2) - pretējā gadījumā iepriekš minētās direktīvas var nedarboties pareizi.

RewriteRule ^([^/]+)/([^/]+)?/?$ ?lang=$1&menu_url=$2 [L] 

Tad jūsu esošā direktīva (iepriekš) pārrakstītu pieprasījumu iekļaut direktīvu lang URL parametrs. Tomēr tas nav stingri. Ja jūs plānojat pārrakstīt pieprasījumu uz index.php (kā minēts jūsu komentārā), tad jums tas skaidri jāiekļauj aizstāšana virkne, tā vietā, lai atbildētu uz mod_dir, lai izsniegtu papildu apakšpieprasījumu direktoriju indeksam. Citiem vārdiem sakot:

 RewriteRule ^([^/]+)/([^/]+)?/?$ index.php?lang=$1&menu_url=$2 [L] 
  • Paldies par atbildi, beidzot es izmantoju daļu no jūsu teikuma un domāju, kā to izdarīt. Galu galā es izmantoju php galveni ar prasību, un tas ir absolūti tas, ko es vēlos un ko es atrodu.

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