Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [.htaccess] Przepisywanie linków z index.php?id=
Forum PHP.pl > Forum > Przedszkole
vellkan
Witam

Przeczytałem dużą część tematów o przepisywaniu linków na forum.
Przetestowałem tutorial jednego z użytkowników, zadziałało, super winksmiley.jpg
Ale teraz chciałem zastosować to w swojej stronie i kicha :/

Sprawa wygląda tak:
konstrukcja pliku index.php

Kod
<?PHP
       include('includes/head.php');
    
       $page=$_GET['id'].'.php';                
      
       if (file_exists($page))
         include($page);    
       else  
         include('home.php');            
        
    
       include('includes/foot.php');
     ?>


I teraz, jeśli chcę dostać się do strony z newsami tak wygląda link do strony:
Kod
<a href="index.php?id=news">News</a>


A tak wygląda plik .htaccess wg. jednego z tutoriali na forum:
Kod
RewriteEngine On
   RewriteBase /~ttk-style
   RewriteRule ^News$ index.php?id=news [L]


No i nie działa.
Nie wiem co mam poradzić, gdyż z zakresu przepisywania linków jestem zielony.
Ale chciałbym w końcu nauczyć się to stosować, po prostu muszę winksmiley.jpg
Aha, to wszystko jest uruchomione na komputerze, serwer lokalny WebServ 2.0.
Nie testowałem na zwykłym serwerze, chciałem na razie to sprawdzić u siebie.

Podejrzewam, że mam problem z linkiem, tzn. wartość href'a w linku jest błędna.
A może jakiś inny styl stworzenia strony, inny szablon, który mógłbym zastosować.

Pozdrawiam
hiszpanespaniol
może domyślnie mod-rewrite jet zablokowany, to pierwsza sprawa. po drugie masz "includes" zamiast "include" przy "foot"

edit:
przepraszam, jestem nie wyspany. zadnego błędu nie ma. sprawdź dostępność mod rewrite, czy .htaccess jest obsługiwany, czy ma się nazywac .htaccess, czy htaccess.txt, czy może w httpd.conf. sprawdź też czy wielkość liter ma znaczenie "news" zamiast "News" itp

edit2:
Cytat
No i nie działa.

w jakim senise nie działa? inkluduje się home? wywala błąd parsowania?

cbagov ma rację, a ja juz chyba nic nie będę pisał, tylko się wyśpię
cbagov
Skoro piszesz ^News
to chyba chcesz klikac link <a href="News">News</a> a nie <a href="index.php?id=news">News</a>
vellkan
Faktycznie, teraz jest O.K.
Nie doczytałem tego, żeby zmienić postać linków.

A jak będzie można stworzyć regułę przepisywania, jeśli mam takich podstron kilka, np.
Kod
    <ul id="Menu">
  <li><a href="index.php?id=news" class="aktualnosci"></a></li>
  <li><a href="index.php?id=about" class="o-firmie"></a></li>
  <li><a href="index.php?id=collections" class="kolekcje"></a></li>

  <li><a href="index.php?id=players" class="zawodnicy"></a></li>
  <li><a href="index.php?id=coach" class="trenerzy"></a></li>
  <li><a href="index.php?id=sales" class="gdzie-kupic"></a></li>
  <li><a href="index.php?id=contact" class="kontakt"></a></li>

  </ul>


Kombinowałem z czymś takim:
Kod
RewriteRule ^(.*)$ index.php?id=$1

ale to się nie sprawdziło.

Chciałbym zrobić regułę, gdyż mam też sporo plików, których adresy są w innym folderze:
Kod
http://adresstrony.pl/kolekcje/index.php?id=darkcol


Dziękuję za szybką pomoc smile.gif
hiszpanespaniol
ja mam coś takiego u siebie:

  1. <?php
  2. RewriteRule ^([a-zA-Z0-9_-]+)/?$ /index.php?teksty=$1 [L]
  3. ?>


działa bez zarzutu dla linków w postaci: /forum albo /forum/ albo /forumphp12 itd

czyli mam <a href="/forum">forum.php.pl</a> a tak naprawde index.php?teksty=forum

co do tego, że masz pliki w innym katalogu, to po prostu może pokombinuj z tym samym index'em zamiast wstawiac index wewnątrz katalogu jak w Twoim przykładzie. GETEM mozna wiele zmiennych przesyłać np: <a href="/pliki/konkretny/pobierz">pobierz ten plik</a>
vellkan
Twoja rada działa, ale częściowo. Tzn. działa kiedy mam katalog o takiej samej nazwie jak plik.

Mam katalog news i plik news.php
I po stworzeniu linka:
<a href="news"> Nowości </a>
strona wyświetla się poprawnie, bo mam taki katalog.

Ale jak zrobiłem do pliku sales.php to nie działało.
Po założeniu katalogu - działa :/

Kod
RewriteEngine On
RewriteBase /~ttk-style/
RewriteRule ^([a-zA-Z]+)/?$ index.php?id=$1 [L]
hiszpanespaniol
moja rada działa poprawnie w całości. niepoprawnie działa to, co Ty robisz z tablicą GET otrzymaną w ten sposób. nie napiszę za Ciebie całej obsługi adresu niestety. pokombinuj, pomyśl. im więcej dni (sic) nad tym posiedzisz, tym mniej pacy w przyszłości
cbagov
Jesli chcesz aby dzialalo a'la katalog, bedziesz musial raczej skorzystac z opcji FollowSymLinks jesli dobrze pisze (z glowy), dodatkowo wtedy nalezy sie zajac sciezkami plikow np w CSS, takze jesli nie chcesz sie trzymac np. standardu linku typu TAG, polecam nie http://...../nazwa ale np. http://...../nazwa.html

Natomiast jak chcesz kilka linkow ustawic w mod_rewrite, starczy jak je po prostu wypiszesz w htaccess:
RewriteRule ^mapa.html index.php?id=123 [QSA]


Mozesz tworzyc oczywiscie linki automatycznie przy edycji (jesli masz jakis modul edycji) i zapisywac w mapie dla mod_rewrite.
W googole: sitepoint mod_rewrite np.
vellkan
Bardzo dziękuję wszystkim za pomoc.

Muszę teraz pokombinować jak stworzyć stronę index.php w inny sposób, żeby tablica GET była poprawna.

Pozdrawiam i dziękuję raz jeszcze smile.gif
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.