Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [.htaccess] Przepisywanie linków z index.php?id=, jaką regułę muszę zastosować?
vellkan
post 15.11.2008, 20:52:06
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 15.11.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
hiszpanespaniol
post 15.11.2008, 20:59:44
Post #2





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

Ostrzeżenie: (0%)
-----


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ę

Ten post edytował hiszpanespaniol 15.11.2008, 21:06:50


--------------------
Go to the top of the page
+Quote Post
cbagov
post 15.11.2008, 21:01:44
Post #3





Grupa: Zarejestrowani
Postów: 181
Pomógł: 18
Dołączył: 19.04.2008

Ostrzeżenie: (10%)
X----


Skoro piszesz ^News
to chyba chcesz klikac link <a href="News">News</a> a nie <a href="index.php?id=news">News</a>
Go to the top of the page
+Quote Post
vellkan
post 15.11.2008, 21:24:22
Post #4





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 15.11.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
hiszpanespaniol
post 15.11.2008, 21:39:49
Post #5





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

Ostrzeżenie: (0%)
-----


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>


--------------------
Go to the top of the page
+Quote Post
vellkan
post 15.11.2008, 21:57:32
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 15.11.2008

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
hiszpanespaniol
post 15.11.2008, 22:04:06
Post #7





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
cbagov
post 15.11.2008, 22:34:25
Post #8





Grupa: Zarejestrowani
Postów: 181
Pomógł: 18
Dołączył: 19.04.2008

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
vellkan
post 15.11.2008, 23:00:32
Post #9





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 15.11.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.06.2025 - 19:40