Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: htaccess - ukryte przekierowanie podkatalogu na inny podkatalog
Forum PHP.pl > Forum > Serwery WWW
grit
Witam,
Mam następujący problem.

Mam stronę umieszczoną w katalogu "_site" dostępną pod domeną www.strona.pl
Aby była dostępna z w/w adresu umieściłem w htaccess następującą formułę

Kod
RewriteCond %{HTTP_HOST} ^www\.strona\.pl$ [NC]
RewriteCond %{REQUEST_FILENAME} !/_site/
RewriteRule ^(.*)$ /_site/$1 [L]

- to działa bez zarzutu.

Teraz chciałbym aby URL www.strona.pl/podstrona/ kierował na inny podkatalog niż "_site", np. "_subsite" ale tak by "_subsite" był katalogiem równorzędnym w strukturze z "_site"
czyli w root mam 2 katalogi - _site i _subsite
na _site kieruje www.strona.pl
na _subsite kieruje www.strona.pl/podstrona

Jeśli przed w/w wpisem umieszczę formułę:
Kod
RewriteCond %{HTTP_HOST} ^www\.strona\.pl$ [NC]
RewriteCond %{REQUEST_URI} podstrona/(.*)
RewriteRule ^(.*)$ /_subsite/index.php [L]

to działa, z tym, że jak pewnie wiecie wszystkie pliki są przekierowywane na index.php czyli nie działają *.js, *.css i inne.

Ale jeśli dam wpis
Kod
RewriteCond %{HTTP_HOST} ^www\.strona\.pl$ [NC]
RewriteCond %{REQUEST_URI} podstrona/(.*)
RewriteRule ^(.*)$ /_subsite/$1 [L]

to serwer wywala błąd 500

Jeśli dodam linikę z {REQUEST_FILENAME}:
Kod
RewriteCond %{HTTP_HOST} ^www\.strona\.pl$ [NC]
RewriteCond %{REQUEST_URI} podstrona/(.*)
RewriteCond %{REQUEST_FILENAME} !/_subsite/
RewriteRule ^(.*)$ /_subsite/$1 [L]

serwer wyrzuca błąd 404.

Pewnie rozwiązanie jest trywialne ale jakoś nie ogarniam htaccess'a.
Byłbym wdzięczny za pomoc w tym temacie.

Z góry bardzo dziękuję

Ponawiam prośbę o pomoc. Czy brak odpowiedzi spowodowany jest tym, że problem jest zbyt błahy? wink.gif
justysia90
Wydaje mi się, że może Ci nie działać dlatego, że w tej regule : RewriteRule ^(.*)$ /_subsite/$1 [L]
$1 odnosi się do całego dopasowania (bo chwytasz wszystko pomiędzy początkiem a końcem dopasowania) czyli jeśli regułka złapała : podstrona/123 to przekierowuje na _subsite/podstrona/123
ale dla pewności dobrze żeby to ktoś jeszcze potwierdził lub nie smile.gif

Może spróbuj dodać przed tą pierwszą regułą, która wyłącza css itp.
RewriteCond %{REQUEST_URI} !\.(js|ico|gif|jpg|png|css)$ [NC]
grit
justysia90 dziękuję za pomoc, niestety chodziło właśnie o przekierowanie całości ruchu na inny katalog - łącznie z plikami dodatkowymi typu, jpg, js itd

Problem siedział gdzie indziej - oczywiście rozwiązanie prawie oczywiste...
Reguła dla _site wykluczała regułę dla _subsite.
Mimo, że na końcu pierwszej formuły jest flaga [L] nie wykluczyłem RewriteCond %{REQUEST_URI} !podstrona/(.*) dla drugiego przekierowania.
W każdym razie poniższe działa.

Kod
RewriteCond %{HTTP_HOST} ^www\.strona\.pl$ [NC]
RewriteCond %{REQUEST_URI} podstrona/(.*)
RewriteCond %{REQUEST_FILENAME} !/_subsite/
RewriteRule ^(.*)$ /_subsite/$1 [L]

RewriteCond %{HTTP_HOST} ^www\.strona\.pl$ [NC]
RewriteCond %{REQUEST_URI} !podstrona/(.*)
RewriteCond %{REQUEST_FILENAME} !/_site/
RewriteRule ^(.*)$ /_site/$1 [L]


Chyba można temat zamknąć
sztaba99
zle przekierowanie robisz
grit
Cytat(sztaba99 @ 19.04.2013, 20:08:29 ) *
zle przekierowanie robisz


tzn.?
zidek
Podczępię się do tego tematu z własnym (podobnym) problemem.
Przeniosłem swoją stronę z głównego katalogu do podkatalogu, w głównym jest teraz index.php z header() i przekierowuje na katalog home/.
Problem w tym, że po wpisaniu adresu http://strona.pl na pasku adres również zmienia się na http://strona.pl/home. Czy przy pomocy pliku .htaccess można to usunąć, by pomimo przekierowania na pasku był tylko adres strony głównej (i jakieś dalsze podstrony)?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.