Küsimus on selles, kuidas teha kahte asja: sundida SSL kõikidele taotlustele ja suunata domeen aadressile public_html / somefolder - kus elab saidi / domeeni sisu. Hostingu koha soovitus (kuigi BlueHost olen seda mujal näinud, on see teine ​​asi teha kaustas public_html htaccessi kaudu:

RewriteEngine on RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] #this next section is what the hosting place says to use # .htaccess main domain to subdirectory redirect # Do not change this line. RewriteEngine on # Change example.com to be your main domain. RewriteCond %{HTTP_HOST} ^(www.)?example.com$ # Change 'subdirectory' to be the directory you will use for your main domain. RewriteCond %{REQUEST_URI} !^/somefolder.c/ # Don't change the following two lines. RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Change 'subdirectory' to be the directory you will use for your main domain. RewriteRule ^(.*)$ /somefolder.c/$1 # Change example.com to be your main domain again. # Change 'subdirectory' to be the directory you will use for your main domain # followed by / then the main file for your site, index.php, index.html, etc. RewriteCond %{HTTP_HOST} ^(www.)?example.com$ RewriteRule ^(/)?$ somefolder.c/index.php [R,L] 

Pange tähele, et saidi sisu elab kaustas somefolder.c.

Nii et htaccess peaks nende taotluste eest hoolitsema

www.example.com example.com http://example.com https://example.com http://www.example.com https://www.example.com https://www.example.com/somepage.php #this page is in public_html/somefolder.c http://example.com/folderb/somepage.php #this page is in public_html/somefolder.c/folderb 

... ja selle variatsioonid.

Ma pole kindel, et ülaltoodud htaccess töötab kõigis nendes olukordades. Niisiis:

  1. Kas on paremat viisi?

  2. Kas on vajalik nõue eraldi htaccessile somefolder.c kaust (sisu 'juur')? Kui jah, siis mida see peaks sisaldama?

Ma ei eelistaks kogu kohta ümber korraldada (saidifailide teisaldamine public_html/somefolder.c Euroopa public_html kausta.

Lisatud

Selle hostikontoga on seotud mitu domeeni. Peamine domeen on www.example.com .

Märgin, et esimene SSL-i osa töötab. Ja teise osa eesmärk on saada https://www.example.com osuta somefolder.c sisu, koos https://www.example.com/folderb/somepage.php osuta public_html/somefolder.c/folderb/somepage.php faili.

Seda https://www.example.com/folderb/somepage.php taotlus (mõnikord; mitte järjekindlalt) näitab https://www.example.com/somefolder.c/folderb/somepage.php aadressiribal. Ma tahan https://www.example.com/folderb/somepage.php aadressiribal kuvamiseks. Seega 'somefolder.c'ei tohiks kunagi aadressiribal ilmuda.

  1. kuidas seda kõige paremini teha htaccess-failidega public_html kaustas
  2. kas alamkaustades on vaja täiendavaid htaccess-faile?

  • 1 Kas SSL-i jõud töötab?
  • 1 Mis tegelikult ei tööta - mis juhtub hetkel? Lihtsalt selgitamiseks /somefolder.c peaks olema kasutaja eest täielikult peidetud? Nii et lõppkasutajale tundub, et kõik failid serveeritakse dokumendi juurest? Lihtsalt teil on segu sisemistest ümberkirjutamistest ja välistest ümbersuunamistest sellesse alamkataloogi - ma arvan, et see on vale. Kas hostite sellel kontol rohkem kui ühte domeeni? Eeldatavasti pole teil veel ühtegi teist .htaccess faile? Kas peate suutma esitada faile dokumendi juurest?
  • Redigeerige küsimust kommentaaride järgi selgitamiseks.
  • Küsimust on taotluse kohta muudetud.
  • Eemaldasin pealkirjast "ümbersuunamise". Selgitusest lähtudes ei soovi te ümbersuunamisi. Ümbersuunamised muudavad URL-i ja muudavad selle muudatuse kasutajatele nähtavaks. Soovite "ümberkirjutamist", mis muudab sisemiselt seda, kuidas server päringut täidab.

Selle hostikontoga on seotud mitu domeeni. Peamine domeen on www.example.com

On natuke ebaselge (teie koodi järgi), mida soovite nende teiste domeenidega teha? Kas soovite kanoniseerida kõik need domeenid oma "peamiseks domeeniks" või soovite need eraldi hoida (et säilitada erinevates domeenides erinev sisu)? Teie HTTP-HTTPS-i ümbersuunamine (mis teie sõnul töötab ") suunab kõik ümber www.example.com - nii kanoniseerib see kõik domeenid peamiseks domeeniks. Kuid kõik järgitavad reeglid kontrollivad taotluses selgesõnaliselt seda domeeni, nagu oleks oodata mitut domeeni - see näib olevat tarbetu?

Eeldan, et need domeenid tuleks kanoniseeritud. Samuti eeldan, et ka muu kui www / www tuleks kanoniseerida (mida te praegu ei tee).

RewriteRule ^(/)?$ somefolder.c/index.php [R,L] 

Teie viimane reegel annab välja ka väline ümbersuunamine kuni somefolder.c/index.php - see läheb katki (kui te pole määranud a RewriteBase kuskil mujal?). Kuid see ei tohiks kahtlemata olla sisemine ümberkirjutamine, mitte an väline ümbersuunamine. Siiski on kahtlane, kas seda üldse vaja on.

Proovige selle asemel midagi järgmist (praeguse reeglistiku põhjal):

RewriteEngine on # non-www to www redirect (HTTP and HTTPS) # - Also canonicalises all other domains RewriteCond %{HTTP_HOST} !^www\.example\.com RewriteRule (.*) https://www.example.com/$1 [R,L] # HTTP to HTTPS redirect # HTTP_HOST is guaranteed to be the primary domain by this stage RewriteCond %{SERVER_PORT} 80 RewriteRule (.*) https://%{HTTP_HOST}/$1 [R,L] # Rewrite all requests (for non-existent files) to `/somefolder.c` RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule !^somefolder\.c /somefolder.c%{REQUEST_URI} [L] 

Olematute failide ja kataloogide kontrollimist ei pruugi vaja minna - tegelikult ei pruugi see üldse olla soovitav. See võimaldab olemasolevaid faile (ja katalooge) serveerida väljaspool /somefolder.c kataloogi. Kuid see takistab ka alamkataloogis asuva saidi oma kohandatud 404 teenimist ErrorDocument.

Muutke ülaltoodud ajutised (302) ümbersuunamised väärtuseks 301 ainult kui olete kindel, et see töötab korras. st. muutus R kuni R=301.

Enne testimist veenduge, et teie brauseri vahemälu oleks puhas.

none: Charles Robertson | none