/ / Jak przekierować root do podkatalogu za pomocą .htaccess - regex, apache, .htaccess, mod-rewrite, przekierowanie

Jak przekierować użytkownika root do podkatalogu za pomocą .htaccess - regex, apache, .htaccess, mod-rewrite, przekierowanie

Obecnie korzystam z hostingu współdzielonego i nie mam możliwości umieszczenia plików poza folderem „public_html”.

Aby obejść ten problem, chcę przepisać moją witrynę „root” na podkatalog przy użyciu poniższego skryptu w pliku .htaccess:

RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/subdir/
RewriteRule ^(.*)$ /subdir/$1

Co działa świetnie, z wyjątkiem sytuacji, gdy nawiguję do www.example.com/subdir/. Ten adres URL nie przekierowuje do dowolnego miejsca, po prostu wyświetla podkatalog. Jest to problem dla względnych adresów URL i tym podobnych.

Czy istnieje sposób na dalsze przepisywanie mojego katalogu głównego do podkatalogu, a także przepisywanie www.example.com/subdir/ do www.example.com?

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz użyć tej reguły w katalogu głównym .htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/subdir/ [NC]
RewriteRule ^(.*)$ subdir/$1 [L]

I użyj tej reguły w /subdir/.htaccess:

RewriteEngine On
RewriteBase /subdir/

RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{THE_REQUEST} /subdir/(S*)s
RewriteRule ^ /%1? [R=302,L,NE]