Back to Question Center
0

Semalt-aliverkkotunnus kansioihin ilman kaksoisviivaa ja siten, että parametrit lähetetään kirjautumisen kautta

1 answers:

Minulla on jokerimerkki DNS-asetukset palvelimella, jotain . esimerkki. com . Minun pääkansiooni on joitain sivustoja, joten tarvitsen jotain tällaista: testi - indoor outdoor restaurant chairs. esimerkki. com pitäisi käyttää test hakemistoa (minulla on lähes 50 sivustoa, ei vain yksi).

Haluan tehdä sen . htaccess -tiedosto. Tällä hetkellä minulla on seuraavat säännöt . htaccess tiedosto:

     RewriteEngine OnRewriteCond% {HTTP_HOST}! ^ Www \. [NC]RewriteCond% {HTTP_HOST} ^ ([^. ] +) \. esimerkiksi \. com $ [NC]RewriteCond% {DOCUMENT_ROOT} /% 1! -dRewriteRule ^ - [L, R = 404]RewriteCond% {HTTP_HOST}! ^ Www \. [NC]RewriteCond% {HTTP_HOST} ^ ([^. ] +) \. esimerkiksi \. com $ [NC]RewriteCond% {DOCUMENT_ROOT} /% 1 -dRewriteCond% {DOCUMENT_ROOT} /% 1% {REQUEST_FILENAME} -f [TAI]RewriteCond% {DOCUMENT_ROOT} /% 1% {REQUEST_FILENAME} -dRewriteRule ^ (. *) $ /% 1 / $ 1 [R = 301, L]    

Se tekee jotain i. e. kun osuin testiä. esimerkki. com se osuu testihakemistoon ja hakee tietoja, mutta se kirjoittaa URL-osoitteen testiksi. esimerkki. com / testi // (2 viivaa lopussa).

Myös kun napsautan linkkiä (esim. / login ), se vie minut testiin. esimerkki. com / login , mutta se ei toimi kun testi. esimerkki. com / test // login lataa sivun, mutta se ei lähetä ilmoittautuneita lomaketietoja (kadonneen 301 uudelleenohjauksen vuoksi).

February 12, 2018
. Tai sinulla on muu koodi, joka suorittaa tämän uudelleenohjauksen?

Et myöskään näe, mistä kaksoisviiva olisi peräisin, vaikka "jotain" tapahtui - mikä edelleen viittaa minuun, että näet välimuistissa olevan vastauksen tai jotain muuta menossa?

(Jos kuitenkin nämä ohjeet olivat suoraan palvelimen konfiguroinnissa, toisin kuin . htaccess (kuten on mainittu), niin nämä direktiivit todennäköisesti tekisivät jotain ja sinä saisit todella kaksinkertaisen viivan!)

Erityisesti . htaccess -yhteydellä, nämä ehdot koskaan eivät onnistu, joten seuraava RewriteRule -direktiivi, joka suorittaa uudelleenohjauksen, ei koskaan tule. Olet todennäköisesti käyttänyt REQUEST_URI palvelimen muuttujaa REQUEST_FILENAME sijasta,. (Palvelinympäristössä REQUEST_FILENAME on kuitenkin sama kuin REQUEST_URI pyynnön alkamispäivänä. )

REQUEST_FILENAME sisältää jo URI: n absoluuttisen tiedostojärjestelmän polun, joten esikirjautuminen tämän DOCUMENT_ROOT ja alihakemiston tiedostojärjestelmän polulle ei tietenkään toimi. (ts. tarkistetaan, onko olemassa oleva hakemisto / hakemisto olemassa olevassa alihakemistossa ennen uudelleenohjausta. ) Tämä mielestäni tuntuu tarpeettomalta ja rajoittaa sellaisten sivustojen tyyppiä, joita voit palvella . esimerkki. com / login on pysyttävä testissä. esimerkki. com / login (siltä osin kuin käyttäjä näkee) eikä ulkoisesti ohjattu - testi. esimerkki. com / test / login ? Muuten, mikä on aliverkkotunnuksen kohta? Tämä myös ratkaisi lomaketiedot, joita ei ohjata uudelleenohjauksella (koska 301 kääntää POST-pyynnön GET: ään).

Joten kokeile jotain seuraavanlaista:

  RewriteEngine On# Älä käsittele www-aliverkkotunnuksen tai apex-verkkotunnuksen pyyntöjä
RewriteCond% {HTTP_HOST} ^ (www \. )? Esimerkki \. com [NC]
RewriteRule ^ - [L]# Kirjoita kaikki alihakemistoihin kuuluvat aliverkkotunnukset välittömästi
RewriteCond% {ENV: REDIRECT_STATUS} ^ $
RewriteCond% {HTTP_HOST} ^ ([^. ] +) \. esimerkiksi \. com [NC]
RewriteCond% {DOCUMENT_ROOT} /% 1 -d
RewriteRule (. *) /% 1 / $ 1 [L] 

Aiemmissa säännöissänne oli ehto (toistettiin jokaiselle säännölle), joka jätti hakemukset www aliverkkotunnukselle. Olen erotanut tämän omiin sääntöihinsä.

Aikaisemmin sinulla oli ennakkotarkastus, joka testasi, että aliverkkotunnus oli alihakemisto. Tämä on tarpeetonta, jos tarkistat tämän alihakemiston olemassaolon toisessa sääntöblokissa.

REDIRECT_STATUS -ympäristömuuttujaa vastaava RewriteCond -direktiivi varmistaa, että kaikki suorat pyynnöt (asiakkaalta) ohjataan uudelleen eikä sisäisiä uudelleenkirjoituksia - mikä estää uudelleenkirjoitussilmukan. htaccess tiedosto alihakemistossa, joka käyttää mod_rewriteä) riippumatta siitä, onko alihakemisto jo etukäteen URL-osoitteessa - tämä mahdollistaa alihakemistojen pesämisen samalla nimellä, syvyyteen, esim.. Sivuston alihakemistosta olisi kuitenkin suositeltavaa olla kyseisessä sivustossa ainutlaatuinen.

RewriteRule : n R -lipun puuttuminen tekee tämän sisäisen kirjoituksen ulkoisen uudelleenohjauksen sijasta ei päivity osoitekenttään).

Ja varmista, että selaimen välimuisti on selvä!