Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z mod_rewrite lub apache
Forum PHP.pl > Forum > PHP
omeck
Troche dziwny temat, ale sami nie wiem co mam nie tak winksmiley.jpg

Adres w przeglądarce wygląda mniej więcej tak: /index.php?mode=jakis_modul
za obsługę modułów odpowiada kod:

  1. <?php
  2. // należy wkleić plik do prawej kolumny
  3. if(isset($_GET['mode'])) {
  4. // zmienna $modulesArray przechowuje listę modułów, jakie mają być dostępne
  5. // funkcja files2array pobiera nazwy plików i wstawia je do tablicy
  6. // oczywiscie robi to przy każdym przeładowaniu strony
  7. // aby nieco przyśpieszyć pracę skryptu można zrezygnować z użycia tej funkcji i z
    definować moduły ręcznie
  8. // wtedy zmianne $modulesArray powinna wyglądać mniej więcej tak $modulesArray = a
    rray('add.php', 'best.php', ...);
  9. $modulesArray = files2array(PATH_MODULES);
  10.  
  11. if(in_array($_GET['mode'], $modulesArray)) include(PATH_MODULES.$_GET['mode'].'.php');
  12.  
  13. $include = $_GET['mode']; 
  14. } else {
  15. $include='main';
  16. }
  17. ?>


nie miałem doczynienia wcześniej z mod_rewrite, wrzuciłem do pliku .htaccess regułkę:
Kod
RewriteEngine On
RewriteRule ^mode-([a-zA-Z0-9_]*).html /index.php?mode=$1 [L]


i pojawiła się strona error'a 500. Zobaczyłem, co wywala mi phpinfo() - w Loaded Modules nie ma mod_rewrite. Pogooglowałem nieco, aby znaleźć jak się włącza mod rewrite w apache. Pomocna okazał się stronka http://enarion.net/web/apache/htaccess/mod_rewrite-on-suse/
ZZrobiłem tak, jak pisali:
Kod
   1.  Edit the file /etc/sysconfig/apache2 as root:
         1. search for APACHE_MODULES, you should find a line like this
            APACHE_MODULES="suexec access actions alias auth auth_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif userdir ssl php4"
         2. Add rewrite to the content in the list between the "
         3. Save the changes and quit
   2. run SuSEconfig to update the apache configuration files
   3. run /etc/init.d/apache2 restart to restart the Apache server

zrestartowałem apache i już w Loaded Modules jest mod_rewrite

Odpaliłem skkrypt i nie wyskoczył już błąd 500. Chciałem sprawdzić, czy wszytko działa i zamiast
/index.php?mode=best wpisuję /mode-best.html i wyskakuje error 404 :/

Skryptu narazie nie zmieniałem, bo chciałem zobaczyć, czy będzie działało - nie wiem teraz, czy mam źle skonfigurowany serwer(na SuSE 9.3), czy w regułkach jest coś nie tak....

bardzo proszę o pomoc...
sf
dales ^mode, a tak naprawde zaczyna sie wszystk od protokolu, potem domena, a potem dopiero jest mode
omeck
Cytat(sf @ 2006-01-09 13:29:23)
dales ^mode, a tak naprawde zaczyna sie wszystk od protokolu, potem domena, a potem dopiero jest mode

to źle? przecież chcę, aby fraza po nazwi domeny zaczynała się od 'mode'. Czy na pewno trzeba, jak napisałeś, zaczynać od http:// i nazwy domeny? :/

Dalej mi nie działa hmm...
splatch
Kod
RewriteEngine On
RewriteRule ^/mode-([a-zA-Z0-9_]*).html$ /index.php?mode=$1 [L]

Musisz podać możliwie pełną nazwę tzn. / jest rootem.
omeck
zrobiłem tak
1. zmieniłem lokalizację na kompie (/srv/www/htdocs)
2. adres lokalny wygląda teraz po prostu http://localhost
3. wgrałem plik .htacces(taki, jaki podał splatch)

wpisując adres http://localhost/index.php?mode=search wszystko jest ok, ale gdy wpiszę http://localhost/mode-search.html wyskakuje błąd 404 :/ A powinna pojawić się strona index.php

Jeżeli regułki są OK, to może mam jeszcze nie do końca skonfigurowany serwer? Muszę to mieć na lokalnym komputerze....

Czy ktoś mógłby mi podać regułki jakich używa? Z góry dzięki za pomoc...
splatch
Ustaw AllowOverride na All dla htdocs.
sf
Kod
RewriteEngine On
RewriteBase /~sf/spreadsheets/

RewriteRule ^mode\-([a-zA-Z0-9\_]+)\.html index.php?action=$1


dziala dla http://127.0.0.1/~sf/spreadsheets/mode-main.html, dostosuj sobie
splatch
Jeśli w httpd.conf nie ma ustawionego AllowOverride All to żaden htaccess nie zadziała. Sam przed chwilą sprawdzałem na Apache 2.0.53.
omeck
Cytat(splatch @ 2006-01-09 18:05:00)
Jeśli w httpd.conf nie ma ustawionego AllowOverride All to żaden htaccess nie zadziała.

Święta racja! rolleyes.gif
już śmiga biggrin.gif

WIELKIE dzięki panowie!
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.