3 htaccess konfigurācija - vienkārša MVC Framework اعدادات السيرفر

Es nezinu .htaccess valodu, tātad iesācēju jautājumu. Man ir šāds kods:

RewriteEngine On RewriteCond %{QUERY_STRING} ^m=1$ RewriteRule (.*) /$1? [R=301,L] 

Tas novirza visus URL, kuriem ir šis paplašinājums ?m=1 uz URL bez paplašinājuma.

Es arī gribētu novirzīt ?m=0 (vai ?m=anything ) uz sākotnējo URL. Kā man vajadzētu pārrakstīt iepriekš minēto kodu? Vai tā vienkārši būtu RewriteCond %{QUERY_STRING} ^m=*$

Šis ir tikpat jautājums par regulārajām izteiksmēm (regex) nekā .htaccess. Otrais arguments (CondPattern) uz RewriteCond direktīvai ir regex, nevis a aizstājējzīme izteiksme. (Konkrēti, Apache izmanto PCRE garša (piemēram, regex.)

Vai tā vienkārši būtu RewriteCond %{QUERY_STRING} ^m=*$

Nē. Tas pieņem, ka arguments ir vienkāršāks aizstājējzīme tipa izteiksme (kur * vienkārši atbilst 0 vai vairāk rakstzīmēm) - tā nav. Regulāri runājot, * atbilst 0 vai vairākiem iepriekšējais raksturs / grupa. Tātad, tas precīzi atbilstu ?m (0 gadījumu), ?m= (1 gadījums), ?m== vai ?m===utt. Jūs nemaz neesat domājis. Tas pat neatbilst jūsu sākotnējam URL.

Pieņemot m URL parametrs vienmēr rodas vaicājuma virknes sākumā, pēc tam, lai tas atbilstu ?m=, jūs varētu vienkārši izmantot regulāro izteiksmi ^m=. Tas atbilst jebkurai vaicājuma virknei, kas sākas m= sekoja jebko (ieskaitot neko). Piemēram:

RewriteCond %{QUERY_STRING} ^m= 

Tomēr jūs parasti vēlaties, lai regex būtu pēc iespējas ierobežojošāks (lai gan tas šajā gadījumā var nebūt piemērojams). Piemēram, lai saskaņotu jebkuru URL, kurā ir vaicājuma virkne ?m=N tikai tad, ja N ir cipars 0–9 un nav citu URL parametru, varat rīkoties šādi:

RewriteCond %{QUERY_STRING} ^m=\d$ 

Kur \d ir jebkura rakstzīmes rakstzīmju stenogrāfija (tāda pati kā [0-9]).

Malā: Pārbaudiet ar 302 (pagaidu) novirzīšanu, lai izvairītos no kešatmiņas problēmām, un pirms testēšanas notīriet pārlūkprogrammas kešatmiņu.

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