Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTACCESS] Przekierowanie na dany folder
Forum PHP.pl > Forum > Serwery WWW > Apache
MateuszRyaN
Witam serdecznie,
Chciałem się dowiedzieć czy istnieje możliwość bezpośredniego przekierowania adresu url na inny podkatalog na serwerze?
Struktura strony: /public_html/strona
Struktura innej strony: /public_html/strona/inna_strona
Chciałbym, aby po wejściu na www.strona.pl/inna-strona , przekierowalo mnie na: /public_html/strona/inna_strona

Mój obecny plik .htaccess:
  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3. RewriteCond %{REQUEST_FILENAME} !-f
  4. RewriteRule ^(.*)$ app.php [QSA,L]
  5. </IfModule>


Próbowałem dodać:
  1. RewriteRule ^inna-strona$ /public_html/strona/inna_strona/$1 [L]

Ale chyba nie tak to ma wyglądać sad.gif

...Albo inaczej.
Po wejściu na podstronę www.strona.pl/inna_strona/index.php (wszystko działa)
A plik .htaccess znajdujacy się w /public_html/strona/inna_strona w jakiś sposób nie działa, byćmoże że w /public_html/strona/ również znajduje się .htaccess
grzes999
Plik z htaccesem umieszczasz tylko w takatolu public_html/strona

  1. RedirectMatch 301 /public_html/strona(.*) /public_html/strona/inna_strona/$1
MateuszRyaN
Rozumiem,
Dziękuje za pomoc, ale mam jeszcze jedno pytanie...
Jeżeli "główna strona" toczy się swoimi regułami w .htaccess , a inna_strona swoimi, to da się je jakoś rozdzielić w jednym pliku .htaccess? Jakaś reguła podobna do <IfModule mod_rewrite.c> ... <Directory ...> ? Pytam dlatego, że public_html/strona ma taki .htaccess:
  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3. RewriteCond %{REQUEST_FILENAME} !-f
  4. RewriteRule ^(.*)$ app.php [QSA,L]
  5. </IfModule>

a, public_html/strona/inna_strona:
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. RewriteCond %{HTTP_HOST} !^www\. [NC]
  4. RewriteRule ^(.*)$ <a href="http://www.%{HTTP_HOST}/$1" target="_blank">http://www.%{HTTP_HOST}/$1</a> [R=301,L]
  5. RewriteRule ^$ index.php [L]
  6. RewriteRule ^/$ index.php [L]
  7. RewriteRule ^index.html$ index.php [L]
  8. RewriteRule ^index.html/$ index.php [L]
  9. RewriteRule ^([a-zA-Z0-9_\-]+)$ index.php?link=$1 [L]
  10. RewriteRule ^([a-zA-Z0-9_\-]+),([^\,]+)$ index.php?link=$1&option=$2 [L]
  11. RewriteRule ^([a-zA-Z0-9_\-]+),([^\,]+),([^\,]+)$ index.php?link=$1&option=$2&category=$3 [L]


I nie chciałbym tego rozwalic, ponieważ public_html/strona jest postawiona na Symphony i wszystko jest sterowane pewnie przez to app.php.
grzes999
Nie bardzo rozumie co chcesz osiągnąć. Przekierowanie na katolog wykorzystuje się gdy przeniosłeś pliki strony do innego katalogu i w tym starym nie powinno być nic po za plikiem htacces. W nowym katalogu masz pliki strony i jeżeli jest potrzebny inny htaccess; albo wszystko możesz napisać w jednym i wrzucić do głowengo katalogu, jeżeli nie będzie ci to z niczym innym kolidować
MateuszRyaN
Chodzi głównie o mod rewrite.
Główna strona www.domena.pl toczy się swoimi prawami www.domena.pl/jakas-podstrona
Natomiast skrypt, który został umieszczony w www.domena.pl/skrypt - toczy się swoimi.
I teraz tak... jeżeli wszedłbym w www.domena.pl/skrypt/index.php (to skrypt się uruchamia), natomiast przy wejściu w www.domena.pl/skrypt - wyświetla mi np. 404 że na stronie www.domena.pl nie ma takiej podstrony. Chciałbym wobec tego to jakoś rozgraniczyć.

Hmmm...może jeszcze inaczej...prościej.

Mamy 2 skrypty:
1 Strona internetowa
2 Jakaś aplikacja Webowa

1. Strona internetowa.
www.domena.pl/kontakt,
www.domena.pl/galeria
www.domena.pl/o-firmie itp...

2. Strona webowa
www.aplikacja.pl
www.aplikacja.pl/logowanie
www.aplikacja.pl/panel
www.aplikacja.pl/administrator itp itp

I chciałbym umieścić tą aplikację na swojej stronie www w podkatalogu "skrypt", czyli żeby struktura linków była nastepująca:
www.domena.pl/skrypt
www.domena.pl/skrypt/logowanie
www.domena.pl/skrypt/panel
www.domena.pl/skrypt/administrator
grzes999
W takim razie nie musisz przekierowywać niczego na iny folder. Tylko musisz wyłączyć Rewiret URL domena.pl/skrypt z katalogu głównego
Spróbuj napisać reguły, które mają dotyczyć wszystkich adresów po za domena.pl/skrypt w tak jak niżej

  1. <DirectoryMatch "^/(?!skrypt)">
  2. // reguły nie dotyczące katalogu skrypt
  3. </DirectoryMatch>


Czyli u ciebie będzie coś takiego

  1. <IfModule mod_rewrite.c>
  2. <DirectoryMatch "^/(?!skrypt)">
  3. RewriteEngine On
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteRule ^(.*)$ app.php [QSA,L]
  6. </DirectoryMatch>
  7. </IfModule>
MateuszRyaN
Kurcze niestety coś nie działa... :/ Popróbuje jeszcze czegoś poszukać w necie. Jak coś to dam znać.
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-2024 Invision Power Services, Inc.