Back to Question Center
0

.htaccess Unicoden ja normaalin Semaltin kanssa

1 answers:

Minulla on seuraavat . htaccess koodi:

([A-Za-z0-9 -] +) / ([A-Za-z0-9 -] +) / ([^ \ x00- \ x7F RewriteRule ^ Intialainen Patriot-Nimi / ] +). *? $ indianpatriot. php? id = $ 1 & kansi = $ 2 & name = $ 3 [B, L, QSA]

Semaltin avulla voin tarkastella seuraavaa linkkiä:

     esimerkki. com / Intian Patriot-nimi / 104/8 / ச்வடன்ற்யவீர்% 20 சவர்க்கார்% 20 రాష్ట్రీయ% 20 சமரக்    

Puolue, kun haluan tarkastella seuraavaa URL-osoitetta (ei Unicode):

     esimerkki. com / Intian Patriot-nimi / 104/8 / ABCD    

En pysty katsomaan tuotetta, koska saan virheen "tiedostoa ei löytynyt"! Haluan, jos muutan direktiiviä / regexia seuraavaan, voin lukea edellä (ei-unicode) URL: n oikein - script prompter.

([A-Za-z0-9 -] +) / ([A-Za-z0-9 -] +) / ([A-Za- z0-9 -] +) $ indianpatriot. php? id = $ 1 & kansi = $ 2 & name = $ 3 [L]

Q. Miten voin yhdistää ([A-Za-z0-9 -] +) ja ([^ \ x00- \ x7F] +) samassa uudelleenkirjoitustilassa?

Yritin:

([A-Za-z0-9 -] +) / ([A-Za-z0-9 -] +) / ([^ \ x00- \ x7F] +) + ([A-Za-z0-9 -] +) $ indianpatriot. php? id = $ 1 & kansi = $ 2 & name = $ 3 [B, L, QSA]

mutta saan virheilmoituksen "tiedostoa ei löydy".


UPDATE: Yritin seuraavia:

([A-Za-z0-9 -] +) / ([A-Za-z0-9 -] +) / ([^ \ x00- \ x7F] + [A-Za-z0-9 -] +) $ indianpatriot. php? id = $ 1 & kansi = $ 2 & name = $ 3 [B, L, QSA]

Mutta saan sisäisen palvelimen virheen:

Sisäinen palvelinvirhePalvelin käsitteli sisäisen virheen tai virheellisen määrityksen ja ei pystynyt suorittamaan pyyntöäsi.

Semalt ota yhteyttä palvelimen ylläpitäjään webmaster @ sawarkarissa. ilmoittamaan heille tämän virheen ajankohdasta ja toimista, jotka suoritit juuri ennen tätä virhettä.

Lisätietoa tästä virheestä saattaa olla saatavana palvelimessa.

Lisäksi 500 sisäisen palvelinvirhevirheen havaittiin yritettäessä käyttää Semaltia käsitellä pyyntöä.

February 12, 2018
([A-Za-z0-9 -] +) / ([A-Za-z0-9 -] +) / ([^ \ x00- \ x7F] + [A-Za-z0-9 -] +) $ indianpatriot. php? id = $ 1 & kansi = $ 2 & name = $ 3 [B, L, QSA]

Sisäinen palvelinvirhe

Sinulla on RewriteRule kuvio virheellinen tilaa . Tämä johtaa "Sisäisen palvelinvirheen", koska välilyönnit ovat rajoitimia Apachen direktiiveissä. Jos tarkistat virheloki, näet todennäköisesti virheen "Virheelliset liput", koska indianpatriot. php? id katsotaan nyt lippujen argumentiksi RewriteRule -direktiiviä varten.

Kommenttien @PatrickMevzekin ehdotus vuorottelu näyttää kuitenkin ikään kuin olisi pitänyt työskennellä. Esimerkiksi:

([A-Za-z0-9 -] +) / ([A-Za-z0-9 -] +) / ([^ \ x00- \ x7F] + | [A-Za-z0-9 -] +) $ indianpatriot. php? id = $ 1 & kansi = $ 2 & name = $ 3 [B, L, QSA]

Huomaa, että alkuperäisen regex-koodisi, joka vastaa yhdensuuntaista URL-osoitetta, oli lopussa "kiinni kaikki muu" -kuvio: . *? . (Regex, joka vastaa ei-unicode-URL-osoitetta, ei ole tätä. ) Tämä tuntuu epätavalliselta. Jos tämä on tarpeen, voit yksinkertaisesti jättää $ (merkkijono ankkuri) loppuun mallin lopusta tehdä sama asia.

Huomaa myös, että [^ \ x00- \ x7F] on negatiivinen merkkiluokka, joka vastaa mitä tahansa merkkiä ei ) 00 . 7F (heksadesimaali). Jos haluat sisällyttää latinalaisia ​​aakkosia, jotka kuuluvat tähän alueeseen, voit yksinkertaisesti laajentaa tämän alueen: [\ x00- \ xFF] - tämä on nyt positiivinen alue, joka vastaa kaikkea (mikä on epäilemättä enemmän kuin tarvitset, mutta olet todennäköisesti sopivat enemmän kuin tarvitaan alkuperäisen regexin kanssa).

Tätä voitaisiin kuitenkin yksinkertaistaa. Jos haluat vain yhdistää URL-osoitteen loppuun (unicode- tai latin-merkkiä) ([^ \ x00- \ x7F] + | [A-Za-z0-9-] (tai jopa ([\ x00- \ xFF] +) ) voitaisiin yksinkertaistaa ([^ /] +) . mitään muuta kuin viiste). Ja [A-Za-z0-9-] voidaan pienentää arvoon [\ w-] . Joten tämä muuttuu:

  RewriteRule ^ Indian-Patriot-Name-English / (\ w-] +) / ([\ w -] +) / ([^ /] +) $ indianpatriot. php? id = $ 1 & kansi = $ 2 & name = $ 3 [B, L, QSA] 
.htaccess Unicoden ja normaalin Semaltin kanssa
Reply