Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przyjazny URL
Forum PHP.pl > Forum > Przedszkole
Stef@n
Witam,
na wstępie zaznaczam ze pierwszy raz się bawię w "Przyjazne URL". No i oczywiście siedzę już od paru dni i nie mogę dojść do ładu... bo wiecznie coś nie działa. Testowałem 3 sposoby i dosłownie wielkie NIC!

Oto moje testy może gdzieś jest błahy błąd i pomożecie.

TEST I
Tutaj już na początku po wpisaniu do pliku .htaccess kodu:
  1. <?php
  2. Options Indexes, Symlinks, Multiviews
  3. ?>

Wyskakuje błąd 500 Internal Server Error

plik test.php wyglądał tak lecz to chyba już bez znaczenia
  1. <?php
  2. $sklad_URL = explode('/', substr($_SERVER['PATH_INFO'], 1));
  3.  
  4. $_SERVER['PATH_INFO'] = (isset($_SERVER['PATH_INFO']) &&
  5. $_SERVER['PATH_INFO'] != '/') ? $_SERVER['PATH_INFO']&nbsp: '/news';
  6. $sklad_URL = explode('/', substr($_SERVER['PATH_INFO'], 1));
  7.  
  8. ?>


TEST II
Linki starą metoda działają a nowa pokazują brak pliku czyli błąd 404 Not Found

Kod .htaccess
  1. <?php
  2. RewriteEngine On
  3. RewriteRule ^/test/(.*)/(.*) /test.php?id=$1&do=$2 [NE]
  4. ?>


Kod test.php
  1. <?php
  2. if($_GET['id'] == 'news'){
  3.    echo "Zmienna 1 = {$_GET['id']}";
  4.    if($_GET['do'] == 'pokaz'){
  5.        echo "<br />Zmeinna 2 = {$_GET['do']}";
  6.    }
  7. }
  8. if ($_GET['id'] == '') {
  9.    echo "Strona główna<hr />";
  10. }
  11. ?>
  12. <hr />
  13. <a href="test.php?id=news&do=pokaz">LINK stary</a><br />
  14. <a href="test/news/pokaz/">LINK nowy</a><br />



Kolejny test
TEST III
Linki starą metoda działają a nowa pokazują brak pliku czyli błąd 404 Not Found czyli jak w przykładzie II

Kod .htaccess
  1. <?php
  2. <Files test>  
  3.  ForceType application/x-httpd-php
  4. </Files>
  5. ?>


Kod test.php
  1. <?php
  2. if($_GET['id'] == 'news'){
  3.    echo "Zmienna 1 = {$_GET['id']}";
  4.    if($_GET['do'] == 'pokaz'){
  5.        echo "<br />Zmeinna 2 = {$_GET['do']}";
  6.    }
  7. }
  8. if ($_GET['id'] == '') {
  9.    echo "Strona główna<hr />";
  10. }
  11. ?>
  12. <hr />
  13. <a href="test.php?id=news&do=pokaz">LINK stary</a><br />
  14. <a href="news/pokaz.html">LINK nowy</a><br />



Bardzo proszę o pomoc
webdice
Najlepszą metodą jest mod_rewrite. Pierwszą rzeczą jaką musisz zrobić to zmienić w httpd.conf:

Kod
<Directory "/www">
  (...)
  AllowOverride none
  (...)
</Directory>


na:

Kod
<Directory "/www">
  (...)
  AllowOverride All
  (...)
</Directory>


Następnie prosty test:
Kod
RewriteEngine On
RewriteRule index.html index.php [L]


Jeśli po wpisaniu index.html otworzy Ci się index.php to znaczy że wszystko działa.

P.S. Powinno być:

Kod
Options +Indexes, +Symlinks, +Multiviews


ale to nie jest potrzebne.
Stef@n
No tak httpd.conf ale jak to zrobić skoro nie mam dostępu? Mogę to ustawić tak jak w pliku .htaccess?
webdice
Pozostaje Ci napisać do administratora serwera. Możliwe jest że w ogólne obsługa plików .htaccess jest wyłączona.
Stef@n
A jak to sprawdzić czy jest włączona czy nie? ;/

Zadziałało coś takiego

  1. <?php
  2. RewriteEngine On
  3. RewriteRule ^test/([0-9A-Za-z_,.-]*)/([0-9A-Za-z_,.-]*)/$ test.php?id=$1&do=$2 [NC]
  4. ?>


A teraz mam pytanie który link jest lepszy dla wyszukiwarek?

1) http://www.domena.pl/test/news/pokaz/
2) http://www.domena.pl/test/news/pokaz.html

Drugie pytanie to takie co zrobić z grafika i stylami bo nie może odnaleźć plików?
Maxik
Każdy z tych linków jest OK, dla wyszukiwarek nie ma to znaczenia, prędzej dla userów. Grafika: w sekcji head dodaj <base href="adres">
Stef@n
Ok wszystkim wielkie dzięki
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.