![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Piszę dla siebie stronkę internetową, postanowiłem zastosować "przyjazne linki".
Linki jakie chcę otrzymać to przykładowo http://host/akcja/ (np. http://localhost/komentarze/ ) Więc według tego napisałem coś takiego (.htaccess) : Kod RewriteEngine On RewriteRule ^forum/$ forum/index.php RewriteRule ^([A-Za-z0-9]+)/$ index.php?action=$1 I tutaj póki co wszystko dobrze działa, przekierowania są dobrze wykonywane. Ale na stronie dodałem linki typu: dodaj/ forum/ komentarze/ Jeżeli raz kliknę - wszystko jest ok, i adres przybiera odpowiednią wartość np. http://localhost/dodaj/ Gdy teraz (po zmianie adresu) kliknę np. na inny link dostanę coś takiego: http://localhost/dodaj/forum/ (co mnie w ogóle nie zadowala (IMG:http://forum.php.pl/style_emoticons/default/haha.gif) ) Wymyśliłem aby linki zrobić jako bezwzględne - nie podoba mi się to rozwiązanie i tutaj pytanie czy da się inaczej. A linki bezwzględne wymyśliłem tak: Mam jakby szablon i mam linki w postaci: Skrypt podmienia na odpowiednią wartość czyli np.: Teraz pojawił się problem, o ile ze statycznymi plikami wszystko jest ok, tak z dynamicznie generowanymi (np. newsy) nie mam pojęcia jak to pogodzić. (IMG:http://forum.php.pl/style_emoticons/default/haha.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 15 Dołączył: 22.03.2009 Skąd: Bytów Ostrzeżenie: (0%) ![]() ![]() |
Jeśli dobrze zrozumiałem, to masz rozwiązanie.
Kod Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteRule (.*)-(.*).html*$ /index.php?menu=$1&id=$2 Zapisz to jako .htaccess |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Jeśli dobrze zrozumiałem, to masz rozwiązanie. Kod Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteRule (.*)-(.*).html*$ /index.php?menu=$1&id=$2 Zapisz to jako .htaccess Kurde patrz mam linki na stronie w postaci: akcja/ cos/ blee/ asdf/ asdfsdf/ Jak mam adres http://localhost/ i kliknę w link przechodzę np. http://localhost/akcja/ i teraz jak kliknę w inny/ten sam link to otrzymam adres typu: http://localhost/akcja/cos/ zamiast http://localhost/cos/ |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 15 Dołączył: 22.03.2009 Skąd: Bytów Ostrzeżenie: (0%) ![]() ![]() |
Proste - nie podkładaj linków typu <a href="/cos" (...) tylko <a href="localhost/cos/" (...)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 231 Pomógł: 17 Dołączył: 26.08.2007 Ostrzeżenie: (10%) ![]() ![]() |
Witam,
Np. Jeśli jesteś na stronie głównej to linki trzymaj w postaci takiej: dodaj/ forum/ komentarze/ a jeśli jesteś np. na stronie dodaj to daj sobie takie linki: ../dodaj/ ../forum/ ../komentarze/ I powinno zadziałać. Pozdrawiam |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Proste - nie podkładaj linków typu <a href="/cos" (...) tylko <a href="localhost/cos/" (...) Witam, Np. Jeśli jesteś na stronie głównej to linki trzymaj w postaci takiej: dodaj/ forum/ komentarze/ a jeśli jesteś np. na stronie dodaj to daj sobie takie linki: ../dodaj/ ../forum/ ../komentarze/ I powinno zadziałać. Pozdrawiam Toteż napisałem sobie skrypt, który tworzy linki bezwzględne. Najlepiej pokażę o co mi chodzi:
I działa bez problemu, a teraz $news ma być generowany dynamicznie i po prostu zgłupiałem. (IMG:http://forum.php.pl/style_emoticons/default/haha.gif) Bawiłem się z ob_start(), ob_get_content(), ob_get_clean(), ob_end_flush() i mi jakoś nie wyszło. ;< |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 77 Dołączył: 5.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
może pomoże Ci metoda, którą ja stosuje. Generalnie do tworzenia linków mam funkcję np.
get_link((string)$module, (string)$action, (int)$param); przykład: get_link('forum',NULL,NULL); funkcja to zwykła podmiana danych działająca na zasadzie:
a w htaccess Kod RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/([0-9]+)$ index.php?module=$1&action=$2&arg=$3 [L] RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)$ index.php?module=$1&action=$2 [L] RewriteRule ^([a-zA-Z]+)$ index.php?module=$1 [L] generalnie próbowałem wzorować się na symfony, jak na moje potrzeby to się sprawdza, może Tobie się przyda, pozdr |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
może pomoże Ci metoda, którą ja stosuje. Generalnie do tworzenia linków mam funkcję np. get_link((string)$module, (string)$action, (int)$param); przykład: get_link('forum',NULL,NULL); funkcja to zwykła podmiana danych działająca na zasadzie:
a w htaccess Kod RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/([0-9]+)$ index.php?module=$1&action=$2&arg=$3 [L] RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)$ index.php?module=$1&action=$2 [L] RewriteRule ^([a-zA-Z]+)$ index.php?module=$1 [L] generalnie próbowałem wzorować się na symfony, jak na moje potrzeby to się sprawdza, może Tobie się przyda, pozdr Jakbyś nie zauważył to napisałem coś równie prostego, i od razu cały szablon jadę. ;p Chyba będę musiał jednak coś sam wymyślić, a bardzo chcę się ustrzec ajax'a bo stronę planuję na większą skalę a jak wiadomo ajax ma być dodatkiem a nie podstawą strony. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) (a zawsze ktoś js może mieć wyłączone) |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 77 Dołączył: 5.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Jakbyś nie zauważył to napisałem to wcześniej niż Ty. Pozdr Fakt ale mój post jest pierwszy. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Hmm... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 11:47 |