Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> htaccess - ukryte przekierowanie podkatalogu na inny podkatalog
grit
post 15.04.2013, 15:47:23
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 13.05.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
justysia90
post 16.04.2013, 15:44:43
Post #2





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.04.2013

Ostrzeżenie: (0%)
-----


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]

Ten post edytował justysia90 16.04.2013, 15:45:26
Go to the top of the page
+Quote Post
grit
post 18.04.2013, 09:56:50
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 13.05.2004

Ostrzeżenie: (0%)
-----


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ąć
Go to the top of the page
+Quote Post
sztaba99
post 19.04.2013, 19:08:29
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 19.04.2013

Ostrzeżenie: (0%)
-----


zle przekierowanie robisz
Go to the top of the page
+Quote Post
grit
post 15.05.2013, 10:40:48
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 13.05.2004

Ostrzeżenie: (0%)
-----


Cytat(sztaba99 @ 19.04.2013, 20:08:29 ) *
zle przekierowanie robisz


tzn.?
Go to the top of the page
+Quote Post
zidek
post 28.05.2013, 19:13:56
Post #6





Grupa: Nieautoryzowani
Postów: 50
Pomógł: 2
Dołączył: 28.05.2013

Ostrzeżenie: (0%)
-----


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)?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2025 - 05:58