.htaccess perrašyti, kad peradresuotų root URL į antrinį katalogą

Bandymas gauti

 www.example.com 

eikite tiesiai į

 www.example.com/store 

Bandžiau keletą kodų ir niekas neveikia.

Ką aš bandžiau:

 Options +FollowSymlinks RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com$ RewriteRule (.*) http://www.example.com/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^(.+)\www.example\.com$ RewriteRule ^/(.*)$ /samle/%1/$1 [L] 

Ką daryti neteisingai?

222
13 июня '09 в 12:28 2009-06-13 12:28 „AlphaSmith“ nustatytas birželio 13 d., 09:28, 2009-06-13 12:28
@ 19 atsakymų

Galite naudoti perrašymo taisyklę, kuri naudoja ^ $, kad atstovautų šaknį ir ją perrašytų / saugoti kataloge, pavyzdžiui:

 RewriteEngine On RewriteRule ^$ /store [L] 
249
25 авг. atsakymas suteiktas Sander 25 rug. 2009-08-25 16:43 '09, 16:43, 2009-08-25 16:43

Buvau nustebęs, kad niekas to nepaminėjo:

 RedirectMatch ^/$ /store/ 
border=0

Iš esmės jis nukreipia šaknį ir tik šakninį URL. Atsakymas kilo iš šios nuorodos.

115
16 янв. Atsakymą pateikė Dio Phung Jan 16 2014-01-16 05:05 '14, 5:05 2014-01-16 05:05

Pabandykite atlikti šiuos veiksmus:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.com$ RewriteRule (.*) http://www.example.com/$1 [R=301,L] RewriteRule ^$ store [L] 

Jei norite išorinio peradresavimo (dėl kurio lankanti naršyklė parodo nukreiptą URL), nustatykite R vėliavą:

 RewriteRule ^$ /store [L,R=301] 
103
13 июня '09 в 12:38 2009-06-13 12:38 atsakymą pateikė Gumbo birželio 13 d., 09:38 2009-06-13 12:38

Štai ką aš panaudojau nukreipiant į antrinį katalogą. Tai tapo nematomu ir vis dar leidžia per užklausas, atitinkančias esamą failą ar panašias.

 RewriteEngine on RewriteCond %{HTTP_HOST} ^(www.)?site.com$ RewriteCond %{REQUEST_URI} !^/subdir/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /subdir/$1 RewriteCond %{HTTP_HOST} ^(www.)?site.com$ RewriteRule ^(/)?$ subdir/index.php [L] 

Pakeiskite svetainę.com ir subdir su savo vertybėmis.

75
26 апр. atsakymas duotas Jage 26 balandis. 2011-04-26 20:02 '11 prie 20:02 2011-04-26 20:02

Kita parinktis yra, jei norite perrašyti URL ir paslėpti pradinį URL:

 RewriteEngine on RewriteRule ^(.*)$ /store/$1 [L] 

Tokiu atveju, jei, pavyzdžiui, įvedate http://www.example.com/product.php?id=4 , jis atidarys failą skaidriai adresu http://www.example.com/store/product.php?id=4 , tačiau nenurodant naudotojo viso URL.

20
05 марта '13 в 0:08 2013-03-05 00:08 atsakymas pateikiamas gausiai kovo 05'13 d. 0:08 2013-03-05 00:08

Jei norite nustatyti nematomą peradresavimą iš šaknies į poaplankį, galite naudoti toliau nurodytą „RewriteRule“ failą „/root/.htaccess“:

 RewriteEngine on RewriteCond %{REQUEST_URI} !^/subfolder RewriteRule ^(.*)$ /subfolder/$1 [NC,L] 

Pirmiau pateikta taisyklė perkelia naršyklę:

į

ir

į

naršyklė išliks šakniniame aplanke.

18
05 марта '16 в 18:17 2016-03-05 18:17 atsakymas duotas Starkeen kovo 05 '16, 18:17 2016-03-05 18:17

Tai atrodė kaip paprasčiausias sprendimas:

 RewriteEngine on RewriteCond %{REQUEST_URI} ^/$ RewriteRule (.*) http://www.example.com/store [R=301,L] 

Gavau nukreipimo kilpas su kitais sprendimais.

13
05 нояб. Atsakymą pateikė user1801050 05 Nov. 2012-11-05 21:47 '12 at 9:47 pm 2012-11-05 21:47

Nesuprantu jūsų klausimo ...

Jei norite nukreipti kiekvieną užklausą į poaplankį:

 RewriteRule ^(.*)$ shop/$1 [L,QSA] http://www.example.com/* -> wwwroot/store/* 

Jei norite nukreipti į poaplankį su domeno pavadinimu

 RewriteCond %{HTTP_HOST} ([^\.]+\.[^\.]+)$ RewriteRule ^(.*)$ %1/$1 [L,QSA] http://www.example.com/* -> wwwroot/example.com/* 
8
16 июня '13 в 0:57 2013-06-16 00:57 atsakymas pateikiamas inf3rno birželio 16 d. 13:57 2013-06-16 00:57

Radau, kad norint išvengti apvalaus peradresavimo, svarbu nukreipti nukreipimo sritį į šaknų katalogą. Norėčiau naudoti:

 RewriteEngine on RewriteCond %{REQUEST_URI} ^/$ RewriteRule (.*) http://www.example.com/store [R=301,L] 
6
15 нояб. Atsakymą pateikė Nir O. 2011-11-15 13:56 '11, 13:56, 2011-11-15 13:56

Dauguma pirmiau minėtų sprendimų yra teisingi, tačiau jie visi praleidžia peradresavimo skaidrumą.

Mano atveju, kai lankiausi www.example.com, norėjau nukreipti į / saugoti pakatalogį, tačiau neatnaujinus URL į www.example.com/store . (tik noriu gauti šio puslapio kodo kodą). Jei taip yra, tuomet žemiau pateiktas sprendimas puikiai tinka.

 RewriteEngine on RewriteCond %{HTTP_HOST} example\.com [NC] RewriteCond %{REQUEST_URI} ^/$ RewriteRule ^(.*)$ /store/$1 [L] 

šaltinis: http://wiki.dreamhost.com/Transparently_redirect_your_root_directory_to_a_subdirectory

5
04 авг. atsakymą pateikė Mahmoud Zalt 04 rug. 2015-08-04 07:37 '15 at 7:37 am 2015-08-04 07:37

Šiuo tikslu galima naudoti peradresavimą .

 Redirect 301 / www.example.com/store 

Arba rodomas rodymas

 Alias / /store 

Redaguoti: mod_alias taikoma tik „httpd.conf“.

Refrakcijos

4
07 февр. Atsakymas, kurį pateikė Abhishek Gurjar 07 vasaris 2017-02-07 12:06 '17, 12:06 2017-02-07 12:06

Aš naudoju šį kodą, kuris veikia tinkamai, kad nukreiptų kiekvieno mano domeno / subdomeno šakninį URL į jų atitikmenų katalogus, kurie patys yra pavadinti kaip sub / domenas:

 RewriteCond %{HTTP_HOST} ^sub1.domain1.com RewriteCond %{REQUEST_URI} !subs/sub1.domain1.com/ RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA] RewriteCond %{HTTP_HOST} ^sub2.domain1.com RewriteCond %{REQUEST_URI} !subs/sub1.domain2.com/ RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA] RewriteCond %{HTTP_HOST} ^sub1.domain2.com RewriteCond %{REQUEST_URI} !subs/sub1.domain2.com/ RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA] RewriteCond %{HTTP_HOST} ^sub2.domain2.com RewriteCond %{REQUEST_URI} !subs/sub2.domain2.com/ RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA] 

Tačiau, kai noriu pridėti kitų pogrupių ar domenų, tada jis turėtų būti pridėtas prie pirmiau pateikto kodo. Turėtų būti kur kas patogiau supaprastinti darbą kaip pakaitos simbolį (*) , kaip parodyta toliau:

 RewriteCond %{HTTP_HOST} ^sub RewriteCond %{REQUEST_URI} !/subs/ RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA] 

Todėl, jei pridedami kiti subdomenai / domenai, jei subdomeno pavadinime yra sub prefiksas (pavyzdžiui: sub3.domain1.com, sub1.domain3.com ir tt), kodas lieka galioti.

4
16 февр. Atsakymas pateikiamas Chetabahana 16 vasario mėn. 2016-02-16 20:55 '16 at 8:55 pm 2016-02-16 20:55

Manau, kad pagrindinės problemos, susijusios su jūsų paskelbtu kodu, yra:

  • Pirmoji eilutė yra tokia pati, kaip ir priimančioji, pradedant griežtai minta.com, todėl www.sample.com nesutampa.

  • Antroje eilutėje reikia bent vieno simbolio, o tada www.sample.com, kuris taip pat neatitinka (kodėl vengėte pirmojo?)

  • Nė viena iš įtrauktų taisyklių nukreipia tikslą nurodytą URL (plius, pavyzdys klaidingai parašytas kaip samle, bet nesvarbu).

Jei norite pateikti nuorodą, čia yra kodas, kurį šiuo metu turite:

 Options +FollowSymlinks RewriteEngine on RewriteCond %{HTTP_HOST} ^sample.com$ RewriteRule (.*) http://www.sample.com/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^(.+)\www.sample\.com$ RewriteRule ^/(.*)$ /samle/%1/$1 [L] 
3
13 июня '09 в 12:40 2009-06-13 12:40 atsakymą pateikė Artem Russakovskii birželio 13 d., 09:40 2009-06-13 12:40

Šiek tiek „googling“ suteikia man šiuos rezultatus:

Įjungti „RewriteEngine“
Perrašyti bazę /
RewriteRule ^ indeksas. (. *)? $ http://domain.com/subfolder/ [r = 301]

Tai peradresuos bet kokius bandymus pasiekti failą, pavadintą index.something iš jūsų poaplankio, nesvarbu, ar failas yra, ar ne.

Arba pabandykite:

RewriteCond% {HTTP_HOST}! ^ www.sample.com $ [NC]
RewriteRule ^ (. *) $% {HTTP_HOST} / samlse / $ 1 [R = 301, L]

Aš nepadariau daug peradresavimo .htaccess faile, todėl nesu tikras, ar tai veiks.

3
13 июня '09 в 12:42 2009-06-13 12:42 Atsakymą pateikė Steven , birželio 13 d., 09:42 2009-06-13 12:42

pabandykite naudoti žemiau eilutę htaccess

Pastaba: gali tekti patikrinti, kas yra pavadinimas default.html

default.html yra failas, įkeltas į pagrindinį aplanką.

RewriteEngine

Redirect /default.html http://example.com/store/

1
14 февр. Atsakymas pateikiamas Abouasy 14 vasario 14 d. 2013-02-14 10:12 13 iš 10:12 2013-02-14 10:12

Du būdai, kaip tai padaryti, yra šie: 1. Sukurkite .htaccess failą šakniniame aplanke pagal (tiesiog pakeiskite example.com ir my_dir atitinkamomis reikšmėmis):

 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^(www.)?example.com$ RewriteCond %{REQUEST_URI} !^/my_dir/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /my_dir/$1 RewriteCond %{HTTP_HOST} ^(www.)?example.com$ RewriteRule ^(/)?$ my_dir/index.php [L] </IfModule> 
  1. Naudokite „RedirectMatch“ tik norėdami nukreipti šakninio URL „/“ į kitą aplanką ar URL,

    RedirectMatch ^ / $ http://www.example.com/my_dir

1
07 июля '17 в 12:23 2017-07-07 12:23 Atsakymą pateikia „ Mushtaq Hussain“ liepos 17 d. 17 val. 12:23 2017-07-07 12:23

jūs paprasčiausiai įtraukiate šį kodą į .htaccess failą

 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /folder/index.php [L] </IfModule> 
0
22 авг. atsakymas, kurį pateikė karthikeyan ganesan 22 rug . 2017-08-22 19:33 '17, 7:33 pm 2017-08-22 19:33

Atsakysiu į pradinį klausimą, nenurodydamas kitos galimos sintaksės (yra daug kitų atsakymų), tačiau, nurodydamas, kad turėjau susidoroti, reikėjo šiek tiek laiko išsiaiškinti:

 What am I doing wrong? 

Yra galimybė, kad% {HTTP_HOST} yra užpildyta neteisingai arba neužpildoma. Nors tik aš pastebėjau, kad tai vyksta tik vienoje mašinoje, kurioje yra bendras kompiuteris, tačiau kai kurios vartotojo nustatytos apache 2.2 fiksuotos, tačiau tai yra galimybė.

0
21 марта '18 в 13:13 2018-03-21 13:13 Atsakymas, kurį pateikė „ ςκης Παλάσης“ kovo 21 d., „18, 13:13 pm 2018-03-21 13:13

Tai bandys subdir, jei failo nėra. Tai yra būtina, nes perkėliau pagrindinę svetainę .html, kuri tikisi, kad ji bus paleista šaknų lygmenyje ir nuspaudžia ją į katalogą. Jis veikia tik tuo atveju, jei visi failai yra plokšti (nėra galimybės, kad subdirektoriuje būtų apeinama htaccess). Naudinga susijusiems dalykams, pvz., Css ir js failams.

 # Internal Redirect to subdir if file is found there. RewriteEngine on RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-s RewriteCond %{DOCUMENT_ROOT}/subdir/%{REQUEST_URI} -s RewriteRule ^(.*)$ /subdir/$1 [L] 
0
26 марта '18 в 10:48 2018-03-26 10:48 Atsakymą pateikia mikeytown2 kovo 26 '18, 10:48 2018-03-26 10:48

Kiti klausimai apie žymes arba Ask a question