Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]htaccess
Forum PHP.pl > Forum > Przedszkole
Lion_87
Witam
Pierwszy raz chciałem się pobawić z Mod_rewrite ale nie działa mi jakoś ani na localhost ani na Home.
Najwidoczniej coś źle robię ale nie wiem co. Tworze htaccess i umieszczam go w katalogu głównym a w nim pierwszy przykład tak jak tu ale nie zmieniają się linki. Ma ktoś pomysł why?
grzemach
Spróbuj to:
Kod
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?strona=$1 [L,QSA]


w pliku index.php będziesz miał dodatkową zmieną o nazwie $_GET['strona'] i tam będzie zapisany cały link
Lion_87
Nie rozumiem.
Czy jakoś specjalnie trzeba włączyć Mod_rewrite żeby działał?
grzemach
tak, musisz mieć włączony mod_rewrite w apachu (na home działa domyślnie, na localhoście nie wiem - różnie to bywa).

a to co wysłałem to był przykładowy wpis do .htaccess.
Lion_87
hmmmm jeszcze raz i powoli....
Czyli wezmy przykład z HOME.
Mam plik .htaccess a w nim:
Kod
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^index_([^-]+).php$ index.php?op=$1 [L]

Zapisany w katalogu głównym.
Ta reguła przepisuje link z
index.php?op=blabla
na
index_blabla.php
i po wpisaniu w przeglądarkę takiego linku powinien on zostać zmieniony(bo u mnie nic sie nie zmienia)?
erix
Cytat
Zapisany w katalogu głównym.
Ta reguła przepisuje link z
index.php?op=blabla
na
index_blabla.php

Na odwrót. winksmiley.jpg W przypadku RewriteRule pierwszy parametr, to poszukiwane wyrażenie, a drugi - podstawienie.
Lion_87
Dzięki erix teraz zrozumialem.
Mam tylko jeszcze jeden problem bo zrobiłem tak
Kod
RewriteEngine On
RewriteRule ^my/([a-zA-Z]+)$ index2.php


a index2.php to dokładnie ta sama stona co index.php ----> w nim a href="/my/aahgLLa">aahgLLa</a>

no i mnie przenosi na index2.php tyle że jakby bez styli o.O nie wczytuja sie i strona jest taka "goła". Why?
grzemach
przypisz styl na stałe:
nie <link href="CSS/main.css" rel="stylesheet" type="text/css" />
a <link href="http://server/CSS/main.css" rel="stylesheet" type="text/css" />

przecież dla serwera wchodzisz do katalogów głębiej a tam nie ma plików CSS smile.gif
Lion_87
No racja smile.gif Dzięki grzemach.
grzemach
powiem Ci szczerze że też na tym się zaciąłem kiedyś i myślałem przez chwilę dlaczego tak jest (i jak robię nową stronę przeważnie zapominam tego dodać tongue.gif)
erix
Tak btw, nie ma sensu podawać całej domeny w ścieżkach (mało przenośne; w przypadku zmiany domeny byłby problem); wystarczy podać ścieżkę względem głównego katalogu (zaczynającą się od /, np: /katalog/katalog/plik).
grzemach
można użyć $_SERVER['SERVER_NAME'] smile.gif
Lion_87
hmmm jak ustawić mod_rewrite na localhoscie?
erix
Cytat
hmmm jak ustawić mod_rewrite na localhoscie?

Grzebiesz w httpd.conf i szukasz odpowiedniego AddModule.
grzemach
w ubuntu wystarczy "sudo a2enmod rewrite" a później restart apacha.
Lion_87
Ale jak włączyć?
Jedyne co znalazłem to to:
Kod
LoadModule negotiation_module modules/mod_negotiation.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
erix
Kod
[b]#LoadModule rewrite_module modules/mod_rewrite.so[/b]

Właśnie o to chodzi; # = komentarz
Lion_87
Mam to usunąć (#)? Spróbowałem ale nadal nic.
erix
Restart serwera by się jeszcze przydał. tongue.gif
wookieb
Zrestartuj serwer...
Lion_87
problem w tym że własnie resetowałem:P nie jestem aż tak zielony.
Szukałem jeszcze ale to jedyna linia z rewrite.
wookieb
Czyli nie łapie ci rewritea z htaccessa
http://www.forum.webserv.pl/viewtopic.php?p=7330#7330

NOTE: Wydaje mi się że wystarczy zrobić to dla elementu
Kod
<Directory "TUTAJ KATALOG STRON TWOJEGO SERWERA">
Lion_87
Dzięki wookieb.
Teraz działa. Zmieniłem tylko dwa polecenia które są na początku w tym linku co podałeś i działa. Dzięki.
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.