Zastanawialiście się kiedyś, czy w PHP-Fusion można zastosować mod_rewrite? Odpowiedź brzmi: tak. Można to zrobić bardzo łatwo i szybko. Przedstawiony sposób nie jest idealny, ponieważ lepiej byłoby, gdyby wyświetlała się np. nazwa newsa, czy strony. Jednakże warto jest to uczynić, ponieważ adresy do poszczególnych stron są łatwiejsze do zapamiętania (zamiast np. article.php?article_id=1 to Czytaj-art-1.html) i w pewnym stopniu pomaga to wyszukiwarkom rozpoznanie treści.
No to do dzieła! Cały proces zapisany jest w poniższych punktach.
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/(.*)$
RewriteRule ^Art\.html$ articles.php [N]
RewriteRule ^Art-kat-([0-9]+)\.html$ articles.php?cat_id=$1 [L]
RewriteRule ^Czytaj-art-([0-9]+)\.html$ readarticle.php?article_id=$1 [L]
RewriteRule ^Home\.html$ index.php [N]
RewriteRule ^Pliki\.html$ downloads.php [N]
RewriteRule ^FAQ\.html$ faq.php [N]
RewriteRule ^Linki\.html$ weblinks.php [N]
RewriteRule ^Kategorie-newsow\.html$ news_cats.php [N]
RewriteRule ^News\.html$ news.php [N]
RewriteRule ^Czytaj-news-([0-9]+)\.html$ news.php?readmore=$1 [L]
RewriteRule ^Kontakt\.html$ contact.php [N]
RewriteRule ^Galeria\.html$ photogallery.php [N]
RewriteRule ^Przeszukaj-forum\.html$ search.php?stype=f [N]
RewriteRule ^Szukaj\.html$ search.php [N]
RewriteRule ^Profil-([0-9]+)\.html$ profile.php?lookup=$1 [L]
RewriteRule ^Galeria-album-([0-9]+)\.html$ photogallery.php?album_id=$1 [L]
RewriteRule ^Galeria-foto-([0-9]+)\.html$ photogallery.php?photo_id=$1 [L]
RewriteRule ^Galeria-foto-powieksz-([0-9]+)\.html$ showphoto.php?photo_id=$1 [L]
RewriteRule ^Pliki-kategoria-([0-9]+)\.html$ downloads.php?cat_id=$1 [L]
RewriteRule ^Pliki-kategoria-([0-9]+)-pobierz-([0-9]+)\.html$ downloads.php?cat_id=$1&download_id=$2 [L]
RewriteRule ^FAQ-kategoria-([0-9]+)\.html$ faq.php?cat_id=$1 [L]
RewriteRule ^Linki-kategoria-([0-9]+)\.html$ weblinks.php?cat_id=$1 [L]
RewriteRule ^Linki-kategoria-([0-9]+)-zobacz-strone-([0-9]+)\.html$ weblinks.php?cat_id=$1&weblink_id=$2 [L]
RewriteRule ^Przygotowanie-do-druku-newsa-([0-9]+)\.html$ print.php?type=N&item_id=$1 [L]
RewriteRule ^Przygotowanie-do-druku-arta-([0-9]+)\.html$ print.php?type=A&item_id=$1 [L]
RewriteRule ^Rejestracja\.html$ register.php [N]
RewriteRule ^Przypomnienie-hasla\.html$ lostpassword.php [N]RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/forum/(.*)$
RewriteRule ^Forum\.html$ forum/index.php [L]
RewriteRule ^Zobacz-forum-([0-9]+)\.html$ forum/viewforum.php?forum_id=$1 [L]
RewriteRule ^Zobacz-forum-([0-9]+)-temat-([0-9]+)\.html$ forum/viewthread.php?forum_id=$1&thread_id=$2 [L]
RewriteRule ^Zobacz-cz-([0-9]+)-forum-([0-9]+)-temat-([0-9]+)\.html$ forum/viewthread.php?rowstart=$1&forum_id=$2&thread_id=$3 [L]
RewriteRule ^Zobacz-forum-([0-9]+)-temat-([0-9]+)-post-([0-9]+)\.html$ forum/viewthread.php?forum_id=$1&thread_id=$2&pid=$3 [L]
RewriteRule ^Zobacz-forum-([0-9]+)-temat-([0-9]+)-cz-([0-9]+)\.html$ forum/viewthread.php?forum_id=$1&thread_id=$2&rowstart=$3 [L]
RewriteRule ^edytuj-forum-([0-9]+)-temat-([0-9]+)-post-([0-9]+)\.html$ forum/post.php?action=edit&forum_id=$1&thread_id=$2&post_id=$3 [L]
RewriteRule ^odp-forum-([0-9]+)-temat-([0-9]+)\.html$ forum/post.php?action=reply&forum_id=$1&thread_id=$2 [L]
RewriteRule ^odp-forum-([0-9]+)-temat-([0-9]+)-post-([0-9]+)-cyt-([0-9]+)\.html$ forum/post.php?action=reply&forum_id=$1&thread_id=$2&post_id=$3"e=$4 [L]
RewriteRule ^nowy-temat-forum-([0-9]+)\.html$ forum/post.php?action=newthread&forum_id=$1 [L]function friendly_url($buf) {
if(!substr_count($_SERVER['REQUEST_URI'],"administration")){
$buf = preg_replace('#readarticle\.php\?article_id=([0-9]*?)(\'|")#si', 'Czytaj-art-\1.html\2', $buf);
$buf = preg_replace('#articles\.php\?cat_id=([0-9]*?)(\'|")#si', 'Art-kat-\1.html\2', $buf);
$buf = preg_replace('#articles\.php#si', 'Art.html', $buf);
$buf = preg_replace('#downloads\.php\?cat_id=([0-9]*?)(\'|")#si', 'Pliki-kategoria-\1.html\2', $buf);
$buf = preg_replace('#downloads\.php\?cat_id=([0-9]*?)(&|&)download_id=([0-9]*?)(\'|")#si', 'Pliki-kategoria-\1-pobierz-\3.html\4', $buf);
$buf = preg_replace('#downloads\.php#si', 'Pliki.html', $buf);
$buf = preg_replace('#faq\.php\?cat_id=([0-9]*?)(\'|")#si', 'FAQ-kategoria-\1.html\2', $buf);
$buf = preg_replace('#faq\.php#si', 'FAQ.html', $buf);
$buf = preg_replace('#forum/index\.php#si', 'forum/Forum.html', $buf);
$buf = preg_replace('#viewforum\.php\?forum_id=([0-9]*?)(\'|")#si', 'Zobacz-forum-\1.html\2', $buf);
$buf = preg_replace('#viewthread\.php\?forum_id=([0-9]*?)(&|&)thread_id=([0-9]*?)(\'|")#si', 'Zobacz-forum-\1-temat-\3.html\4', $buf);
$buf = preg_replace('#viewthread\.php\?rowstart=([0-9]*?)(&|&)forum_id=([0-9]*?)(&|&)thread_id=([0-9]*?)(\'|")#si', 'Zobacz-cz-\1-forum-\3-temat-\5.html\6', $buf);
$buf = preg_replace('#viewthread\.php\?forum_id=([0-9]*?)(&|&)thread_id=([0-9]*?)(&|&)pid=([0-9]*?)\#post_([0-9]*?)(\'|")#si', 'Zobacz-forum-\1-temat-\3-post-\5.html#post_\6\7', $buf);
$buf = preg_replace('#post\.php\?action=newthread(&|&)forum_id=([0-9]*?)(\'|")#si', 'nowy-temat-forum-\2.html\3', $buf);
$buf = preg_replace('#viewthread\.php\?forum_id=([0-9]*?)(&|&)thread_id=([0-9]*?)(&|&)rowstart=([0-9]*?)(\'|")#si', 'Zobacz-forum-\1-temat-\3-cz-\5.html\6', $buf);
$buf = preg_replace('#post\.php\?action=edit(&|&)forum_id=([0-9]*?)(&|&)thread_id=([0-9]*?)(&|&)post_id=([0-9]*?)(\'|")#si', 'edytuj-forum-\2-temat-\4-post-\6.html\7', $buf);
$buf = preg_replace('#post\.php\?action=reply(&|&)forum_id=([0-9]*?)(&|&)thread_id=([0-9]*?)(\'|")#si', 'odp-forum-\2-temat-\4.html\5', $buf);
$buf = preg_replace('#post\.php\?action=reply(&|&)forum_id=([0-9]*?)(&|&)thread_id=([0-9]*?)(&|&)post_id=([0-9]*?)(&|&)quote=([0-9]*?)(\'|")#si', 'odp-forum-\2-temat-\4-post-\6-cyt-\8.html\9', $buf);
$buf = preg_replace('#weblinks\.php\?cat_id=([0-9]*?)(\'|")#si', 'Linki-kategoria-\1.html\2', $buf);
$buf = preg_replace('#weblinks\.php\?cat_id=([0-9]*?)(&|&)weblink_id=([0-9]*?)(\'|")#si', 'Linki-kategoria-\1-zobacz-strone-\3.html\4', $buf);
$buf = preg_replace('#weblinks\.php#si', 'Linki.html', $buf);
$buf = preg_replace('#news_cats\.php#si', 'Kategorie-newsow.html', $buf);
$buf = preg_replace('#news\.php\?readmore=([0-9]*?)(\'|")#si', 'Czytaj-news-\1.html\2', $buf);
$buf = preg_replace('#contact\.php#si', 'Kontakt.html', $buf);
$buf = preg_replace('#photogallery\.php\?album_id=([0-9]*?)(\'|")#si', 'Galeria-album-\1.html\2', $buf);
$buf = preg_replace('#photogallery\.php\?photo_id=([0-9]*?)(\'|")#si', 'Galeria-foto-\1.html\2', $buf);
$buf = preg_replace('#showphoto\.php\?photo_id=([0-9]*?)(\'|")#si', 'Galeria-foto-powieksz-\1.html\2', $buf);
$buf = preg_replace('#photogallery\.php#si', 'Galeria.html', $buf);
$buf = preg_replace('#search\.php\?stype=f#si', 'Przeszukaj-forum.html', $buf);
$buf = preg_replace('#search\.php#si', 'Szukaj.html', $buf);
$buf = preg_replace('#profile\.php\?lookup=([0-9]*?)(\'|")#si', 'Profil-\1.html\2', $buf);
$buf = preg_replace('#print\.php\?type=N(&|&)item_id=([0-9]*?)(\'|")#si', 'Przygotowanie-do-druku-newsa-\2.html\3', $buf);
$buf = preg_replace('#print\.php\?type=A(&|&)item_id=([0-9]*?)(\'|")#si', 'Przygotowanie-do-druku-arta-\2.html\3', $buf);
if(!substr_count($_SERVER['REQUEST_URI'],"forum")) $buf = preg_replace('#index\.php#si', 'Home.html', $buf);
$buf = preg_replace('#register\.php#si', 'Rejestracja.html', $buf);
$buf = preg_replace('#lostpassword\.php#si', 'Przypomnienie-hasla.html', $buf);
$buf = preg_replace('#ion/Home\.html#si', 'ion/index.php', $buf);
}
return $buf;
}
add_handler("friendly_url");Kod zaczerpnięty z forum PHP-Fusion. Autor: SlawekNeo.
godzina: 19:46
Za dużo się nie narobiłeś, sklepałeś tylko w punkty
.
Linki typu: news-1.html to według mnie żadne przyjazne linki najlepiej jest tak jak ma WordPress
np.
blog-lisu.eu/2009/07/19/przyjazne-linki-w-php-fusion-v7/
Taki link sprawi że pod odpowiednim pytaniem google od razu znajdzie naszą stronę:
http://www.google.pl/search?q=Przyjazne+linki+w+PHP-Fusion+v7&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:pl:official&client=firefox-a
godzina: 19:59
No to napisałem, że w takiej postaci niewiele dają te linki, ale innnej opcji do PF obecnie nie znalazłem (nie wymagającej edycji plików). Na forum PHP-Fusion są wzmianki o Furl2, ale Slawekneo jeszcze nie wrzucił tego.
Ta modyfikacja dobra jest jedynie na pojedyńcze podstrony np. redakcja itp.
Co do mojej roboty to przeszukałem wszystkie tematy na forum na ten temat
godzina: 22:19
Jest jakiś temat chyba jak zrobić newsy, arty albo userów tak żeby wyświetlało ich nazwę… Ale dokładnie sam nie pamiętam jak to szło ;]
godzina: 22:26
Bo jest ten Furl 2 w wersji beta, która zresztą na pf7 nie chce mi działać.
godzina: 17:01
Dodanie naprawdę przyjaznych linków do fusiona to żaden problem
Sposób opisany wyżej może ułatwić indeksację, ale nie przekazuje słów kluczowych, więc za dobry nie jest.
Poza tym warto zastanowić się nad wydajnością. Cała kod naszej wygenerowanej strony jest poddawany kilkanaście razy wyszukiwaniu i podmianie przy użyciu preg_replace. Samo szukanie nieźle spowalnia, a tu dochodzi jeszcze dopasowanie do wyrażeń regularnych + podmiana. IMO przy nawet średnim ruchu, może to mieć fatalne skutki na serwer.
Nie żebym się reklamował, ale moja metoda nie robi choćby jednego dodatkowe zapytania do bazy
No chyba że zdecydujemy się na wariant bez duplikatów, bo jak wiadomo link:
adres-strony.pl/news12/to-jest-przykladowy-news/
w większości wypadków działa również jako:
adres-strony.pl/news12/bezesneowny-tekst/
No i w efekcie mamy duplicate content na stronie, jeżeli ktoś poda zmieniony link. W wypadku metody bez duplikatów („zero duplicate”), problem nie występuje: jeżeli link jest nieprawidłowy, następuje automatyczne przekierowanie stałe na postać poprawną.
godzina: 17:22
Masz rację Lukas. Dałem to, co znalazłem i było proste dla przeciętnego usera. Jak będę robił stronę w fusionie to w sprawie przyjaznych linków zgłoszę się do Ciebie.