![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
Witam
Ostatnio poproszono mnie o zrobienie systemu Przyjaznych linków w CMSie. Zrobiłem to tak jak ja to sobie wyobraziłem, ale nie wiem czy jest to zrobione poprawnie. Tzn działać działa, tylko czy poprawnym sposobem to zrobiłem. Oto strona na której zrobiłem te przyjazne linki: www.aiononline.home.pl w cmsie można dodawać artykuły itp...no i są do nich tworzone linki np: http://www.aiononline.home.pl/index.php?teksty=41 Wyświetla wybrany artykuł. Po dodaniu przyjaznych linków można się dostać do artykułu przez link: http://www.aiononline.home.pl/cryengine.php Jak to działa? Otóż w główny katalogu są tworzone pliki o takich nazwach jak tytuł artykuły. Oczywiście bez polskich i znaków specjalnych. Ten plik posiada tylko odwołania do plików z szkieletami strony. Czyli łączy wszystkie części indexu no i dodaje art. Pliki są bardzo mało, no ale niestety minusem tej metody jest to że w katalogu głównym tworzy się sporo plików... Czy macie jakiś lepszy pomysł jak lepiej rozwiązać problem przyjaznych linków? -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Zdaje mi się że nie rozumiesz istoty przyjaznych linków.
Mianowicie przyjazne linki to na przykład takie: http://www.aiononline.home.pl/testy/41/ http://www.aiononline.home.pl/index.php/testy/41/ http://www.aiononline.home.pl/cryengine/ Proponuję użyć do tego mod_rewrite ( pierwszy i trzeci przykład ) jako że każdy typ konta na tym hostingu go wspiera. Ten post edytował orglee 17.01.2008, 15:12:33 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 155 Pomógł: 9 Dołączył: 26.01.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
przyjazne linki mówisz...
modrewrite polecam. np: http://strona/artykuly/id/tytul_artykulu tytuł artykułu trzeba pozbawić polskich liter, spacji itp żeby się krzaki po urlencode nie pojawiły ja używam takiej funkcji:
to jest przyjazne wszystkim wyszukiwarkom... bo najpierw np. google patrzy na url potem na Keywords, Description i treśc. możesz jeszcze zamiast narażać się na ataki ludzi co zmieniają sobie ID zapodać taki trik. Trzymasz w osobnym polu w bazie tyutuł po przejściu funkcji translatepl i masz jeszcze prościej: http://strona/artykuy/tytul_artykulu Pozdr Ten post edytował MMX3 17.01.2008, 15:38:30 -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
dziękuje macie racje. To jest o wiele lepsze rozwiązanie
![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 374 Pomógł: 23 Dołączył: 3.06.2006 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
tak jak powiedział przedmówca: mod_rewrite
Przykłądowy plik .htaccess z wykorzystanie mod_rewrite: Kod php_flag display_errors ON Options FollowSymLinks RewriteEngine On # Przepisanie strony glownej RewriteRule ^index.html$ index.php RewriteRule ^porady.html$ index.php?action=content&content_id=2 RewriteRule ^wspolpraca.html$ index.php?action=content&content_id=3 RewriteRule ^regulamin.html$ index.php?action=content&content_id=4 RewriteRule ^oferta.html$ index.php?action=content&content_id=6 RewriteRule ^galeria.html$ index.php?action=gallery RewriteRule ^wyloguj.html$ index.php?logout RewriteRule ^kontakt.html$ index.php?action=contact #OPONY / SZCZEGOLY OPOPNY: RewriteRule ^opony.html$ index.php?pid=tires RewriteRule ^opony-(.*.).html$ index.php?pid=tires&pp_tires=$1 RewriteRule ^(.*.),opona-(.*.).html$ index.php?pid=tires&action=tire_details&tire_id=$2 #KOSZYK I ZAMOWIENIE: RewriteRule ^koszyk.html$ index.php?pid=order&action=cart RewriteRule ^zloz_zamowienie.html$ index.php?pid=order&action=send RewriteRule ^dziekujemy.html$ index.php?pid=order&action=thanks I potem generujesz linki za pomocą php pasujące do wyrażeń określonych w .htaccess Wbrew pozorom jak by się mogło wydawać, obsługa tego jest banalnie prosta. Jeśli bedziesz chciał stosować znaki "/" oddzielające zmienne będziesz musiał użyć base href. -------------------- Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 466 Pomógł: 11 Dołączył: 21.09.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Czyli po wpisaniu w .htaccess takiego czegoś:
będę w linkach w kodzie mógł zamiast index.php podstawiać index.html ? Bo rozumiem, że serwer ani plik sam tego nie zamienia, tylko my podajemy metody zamiany i w kodzie sami formatujemy odpowiednio linki pasujące do wzorca? moze ktoś podac przykłąd jak napisać .htaccess aby zamieniał mi np taki link: company.php?id=23 na jakis przyjazny np company.php/id/23/ ![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 191 Pomógł: 5 Dołączył: 13.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
moze ktoś podac przykłąd jak napisać .htaccess aby zamieniał mi np taki link: company.php?id=23 na jakis przyjazny np company.php/id/23/
pokiełbasiło Ci się trochę - mod_rewrite odczytuje w drugą stronę - Ty podajesz mu przyjazny link a moduł zamienia na "śmieci" reguła o którą prosisz może być taka: RewriteRule ^company/([0-9]*) company.php?id=$1 -------------------- "Don't tell me you want a bridge - show me the canyon you want to cross" Giuseppe Delena
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
ja używam takiej funkcji:
oj po co taki kombajn nie lepiej tak?
Ten post edytował my salsa 19.01.2008, 12:25:29 -------------------- scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 560 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
urlencode()" title="Zobacz w manualu PHP" target="_manual i po co kombinować
![]() -------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ja to robię tak:
.htaccess: Kod RewriteEngine on RewriteCond $1 !^(index\.php|uploads|robots\.txt|cms) # <- tutaj pliki ktore sie nie liczą RewriteRule ^(.*)$ /index.php/$1 [L] A w index.php mniej więcej coś takiego (pisane od ręki): Kod $path = $_SERVER['PATH_INFO']; $path = explode('/',$path); foreach($path as $segment){ if(!empty($segment)) $path[] = $segment; } oczywiście do tego dochodzi sprawdzenie znaków (dozwalam tylko A-Z a-z 0-9 +-_ ) Takie rozwiązanie jest najelastyczniejsze, bo nie musimy sie martwić ograniczeniami mod_rewrite... -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.06.2025 - 23:18 |