Mod Rewrite nie działa


(Mayerproject) #1

Witam.

Zastanawiałem się ostatnio nad takim czymś jak w temacie.

Na kilku stronkach zauważyłem że zamiast index.html, jest w adresie strony coś takiego jak ?id=NazwaStrony.

Mam pytanie, jak coś takiego zrobić?

A na jeszcze jakiejś stronie, widziałem że jest bez id, tzn.

I to samo pytanie jak wyżej, tzn. Jak to zrobić?


(Admin) #2

Poczytaj o mod rewrite, np tutaj:


(Mayerproject) #3

Czyli że stronkę musiałbym wtedy zapisywać jako .php ?


(Admin) #4

Nie nie musi być na php.

Wszystko to odbywa się za pomocą pliku .htaccess, który wgrywa się na serwer do katalogu głównego strony.

Utwórz sobie nowy plik .txt, dodaj tam kod napisany według artykułu do którego dałem link (oczywiście według własnych potrzeb), zapisz, a następnie zmień nazwę pliku plik.txt na .htaccess No i wgraj to potem na serwer do katalogu głównego.


(Mayerproject) #5

Nie znam PHP, ale mam zamiar się uczyć. Więc może zacznę od tego :stuck_out_tongue:

Mam takie coś w .httacess :

Options FollowSymLinks

RewriteEngine On


RewriteRule ^index.php$ ?start [L]

RewriteRule ^omnie.php$ ?omnie [L]

RewriteRule ^portfolio.php$ ?prace [L]

RewriteRule ^kontakt.php$ ?kontakt [L]

Niestety gdy wpisuje: verex.pl/beta/?prace , to wyświetla mi i tak stronę główną. Hosting mam na netmark.pl, i pisze że obsługuje Mod Rewrite. Co mam nie tak? ***EDIT*** Dam screena z Total Commandera:http://iv.pl/images/86004916074962095964.pngMam takie pliki na serwerze, i taki kod w .htacess:

Options FollowSymLinks

RewriteEngine On


RewriteRule ^index.php$ ?start [L]

RewriteRule ^omnie.php$ ?omnie [L]

RewriteRule ^portfolio.php$ ?prace [L]

RewriteRule ^kontakt.php$ ?kontakt [L]

(Asperek) #6

Uno: nie .htacess ale .htaccess

Duo: Niekoniecznie link w formacie http://nazwastrony.pl/?nazwa jest z zastosowaniem mod_rewrite.

Mi to wygląda na proste ustawienie zmiennej $_GET bez przypisania jej danej wartości. Innymi słowy w linku http://nazwastrony.pl/?id=NazwaStrony zmiennej $_GET['id'] przypisana jest wartość NazwaStrony. Czyli w wypadku http://nazwastrony.pl/?nazwa jest tylko $_GET['nazwa'] bez przypisanej wartości. Na podstawie tego, można napisać system podstron, który widziałeś na owych stronach.

Proponuję ci skorzystanie z takiego skrypciku, i do tego mod_rewrite:

index.php:

<?php


//Jakieś menu, banner itp., a dopiero w divie w którym ma znaleźć się zmieniana zawartość strony


switch($_GET['s']){


case 'omnie':

include('omnie.php');

break;


case 'prace':							

include('portfolio.php');							

break;


default:							

include('glowna.php'); //Podstrona wyswietlana po wejsciu na strone

}

?>

.htaccess:

Options FollowSymLinks

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule (.+) index.php?s=$1 [L]

W powyższym wypadku, aby przesłać wartość $_GET['s'] == "portfolio" wystarczy wpisać http://nazwastrony.pl/portfolio


(Mayerproject) #7

gachowy ten skrypcik nie działa, albo ja coś źle zrobiłem.

Znalazłem jakiś poradnik na home.pl i mam taki kod:

RewriteEngine On

RewriteRule (?start) /index.html

RewriteRule (?kontakt) /kontakt.html

Ale w index.php nic innego po za kodem strony nie wpisywałem.

I wyskakuje mi błąd: