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 № 1Moż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]