[SOLVED] apache2 / mod_rewrite - błąd 404

Instalacja i konfiguracja oprogramowania sieciowego.
nix1
Piegowaty Guziec
Piegowaty Guziec
Posty: 8
Rejestracja: 17 cze 2009, 17:00
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME

[SOLVED] apache2 / mod_rewrite - błąd 404

Post autor: nix1 »

Witam,

Mój mod_rewrite jest jak sądzę poprawnie zainstalowany i działa, ale za każdym razem pokazuje błąd 404 dla docelowego pliku.

Przykład testowy, dwa pliki:
  • /home/pawel/public_html/hta/bob.html
  • /home/pawel/public_html/hta/.htaccess
Zawartość .htaccess:

Kod: Zaznacz cały

RewriteEngine on
RewriteRule ^alice.html$ bob.html
Gdy odpalam alice.html w przeglądarce dostaję:

Kod: Zaznacz cały

Not Found
The requested URL /home/pawel/public_html/hta/bob.html was not found on this server
Chmod nie pomaga, dzieje się tak niezależnie od uprawnień nadanych na bob.html, .htaccess czy katalog hta.

Ktoś wie w czym jeszcze może być problem? Proszę o pomoc... i z góry dzięki

Pozdrawiam!
Awatar użytkownika
Reiven
Piegowaty Guziec
Piegowaty Guziec
Posty: 24
Rejestracja: 08 lip 2006, 21:37
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Brak
Architektura: x86_64
Lokalizacja: Londyn
Kontakt:

Odp: [apache2] mod_rewrite - błąd 404

Post autor: Reiven »

mam ten sam problem co kolega wyżej... edytowałem pliki w mods-enabled , rewrite włączony poprzez a2enmod i tak nie działa :|
kakiet
Piegowaty Guziec
Piegowaty Guziec
Posty: 3
Rejestracja: 30 kwie 2009, 17:06
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: [apache2] mod_rewrite - błąd 404

Post autor: kakiet »

prawa dostępu na pliku?
nix1
Piegowaty Guziec
Piegowaty Guziec
Posty: 8
Rejestracja: 17 cze 2009, 17:00
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME

Odp: [apache2] mod_rewrite - błąd 404

Post autor: nix1 »

Już wspomniałem w pierwszym poście, że to nie prawa dostępu.

Kod: Zaznacz cały

pawel@pawel-desktop:~/public_html$ ls -la | grep "hta$" && ls -laR hta
drwxr-xr-x  2 pawel pawel    4096 2010-11-15 11:18 hta
hta:
razem 16
drwxr-xr-x  2 pawel pawel 4096 2010-11-15 11:18 .
drwxr-xr-x 16 pawel pawel 4096 2010-11-16 12:00 ..
-rwxr-xr-x  1 pawel pawel    4 2010-11-15 11:10 bob.html
-rwxr-xr-x  1 pawel pawel   51 2010-11-15 11:18 .htaccess
Moduł rewrite jest włączony, zresztą widać że działa, bo próbuje otworzyć plik bob.html

Kod: Zaznacz cały

pawel@pawel-desktop:~/public_html$ ls /etc/apache2/mods-enabled/ | grep rewrite
rewrite.load

Kod: Zaznacz cały

pawel@pawel-laptop:~$ cat /etc/apache2/mods-enabled/rewrite.load 
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

Kod: Zaznacz cały

pawel@pawel-laptop:~$ ls -la  /usr/lib/apache2/modules/mod_rewrite.so
-rw-r--r-- 1 root root 58704 2010-08-16 19:41 /usr/lib/apache2/modules/mod_rewrite.so


Można też sprawdzić, że plik bob.html jest dostępny z przeglądarki

Kod: Zaznacz cały

pawel@pawel-desktop:~/public_html$ wget -O - http://localhost/pawel/hta/bob.html
--2010-11-19 12:06:28--  http://localhost/pawel/hta/bob.html
Translacja localhost... ::1, 127.0.0.1
Łączenie się z localhost|::1|:80... nieudane: Connection refused.
Łączenie się z localhost|127.0.0.1|:80... połączono.
Żądanie HTTP wysłano, oczekiwanie na odpowiedź... 200 OK
Długość: 4 [text/html]
Zapis do: `STDOUT'

 0% [                                                                                    ] 0           --.-K/s
bob
100%[===================================================================================>] 4           --.-K/s   w 0s       

2010-11-19 12:06:28 (589 KB/s) - zapisano na standardowe wyjście [4/4]
więc z jednej strony apache ma do niego dostęp, a z drugiej jak ma na niego przepisać to nie widzi...
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Odp: [apache2] mod_rewrite - błąd 404

Post autor: ethanak »

nix1 pisze:Już wspomniałem w pierwszym poście, że to nie prawa dostępu.
Ja tak z ciekawości - dlaczego zamiast gdybać nie włączycie sobie po prostu logowania dla mod_rewrite?

No, chyba że ostatnio w Ubuntu pokazał się taki nowy Apache co logów nie ma?
Кто жопой родился, чижиком не помрёт
nix1
Piegowaty Guziec
Piegowaty Guziec
Posty: 8
Rejestracja: 17 cze 2009, 17:00
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME

Odp: [apache2] mod_rewrite - błąd 404

Post autor: nix1 »

Nie udało mi się włączyć logowania dla mod_rewrite (próbowałem htaccessem - RewriteLog), pewnie coś robiłem nie tak bo wywalał internal server error (RewriteLog not allowed here).
Natomiast za pomocą logów apache'a doszedłem, że on szuka pliku /var/www/home/pawel/public_html/hta/bob.html.

Dlaczego? :-o
Zmiana RewriteBase nie pomaga, bo i tak zawsze zaczyna od /var/www...

Jeszcze do kompletu dodaję moją konfigurację vhosta.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Odp: [apache2] mod_rewrite - błąd 404

Post autor: ethanak »

nix1 pisze:Nie udało mi się włączyć logowania dla mod_rewrite (próbowałem htaccessem - RewriteLog), pewnie coś robiłem nie tak bo wywalał internal server error (RewriteLog not allowed here).
Oczywicie że nie tak - tego nie można włączyć w htaccess tylko w konfiguracji serwera albo wirtualki. Zresztą Apacz Cię o tym uprzejmie poinformował, tyle że dokładne czytanie komunikatów (szczególnie że w obcym języku są) uznałeś pewnie za stratę czasu.

Weź sobie oficjalną dokumentację Apacza (o mod_rewrite tam cała książka jest), przeczytaj i się zastosuj.
Кто жопой родился, чижиком не помрёт
nix1
Piegowaty Guziec
Piegowaty Guziec
Posty: 8
Rejestracja: 17 cze 2009, 17:00
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME

Odp: [apache2] mod_rewrite - błąd 404

Post autor: nix1 »

Włączyłem logowanie wszystkiego (na poziomie 9). Nic tam nie ma, wydaje mu się że wszystko jest dobrze.

Kod: Zaznacz cały

85.121.163.252 - - [19/Nov/2010:16:12:35 +0100] [pawel-desktop/sid#7f559cea5628][rid#7f559d33c488/initial] (3) [perdir /home/pawel/public_html/hta/]
  strip per-dir prefix: /home/pawel/public_html/hta/alice.html -> alice.html
85.121.163.252 - - [19/Nov/2010:16:12:35 +0100] [pawel-desktop/sid#7f559cea5628][rid#7f559d33c488/initial] (3) [perdir /home/pawel/public_html/hta/]
  applying pattern '^alice.html$' to uri 'alice.html'
85.121.163.252 - - [19/Nov/2010:16:12:35 +0100] [pawel-desktop/sid#7f559cea5628][rid#7f559d33c488/initial] (2) [perdir /home/pawel/public_html/hta/]
  rewrite 'alice.html' -> 'bob.html'
85.121.163.252 - - [19/Nov/2010:16:12:35 +0100] [pawel-desktop/sid#7f559cea5628][rid#7f559d33c488/initial] (3) [perdir /home/pawel/public_html/hta/]
  add per-dir prefix: bob.html -> /home/pawel/public_html/hta/bob.html
85.121.163.252 - - [19/Nov/2010:16:12:35 +0100] [pawel-desktop/sid#7f559cea5628][rid#7f559d33c488/initial] (1) [perdir /home/pawel/public_html/hta/]
  internal redirect with /home/pawel/public_html/hta/bob.html [INTERNAL REDIRECT]
Nie zmienia to faktu, że nie wiadomo skąd dokleja mu się /var/www.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Odp: [apache2] mod_rewrite - błąd 404

Post autor: ethanak »

nix1 pisze: Nie zmienia to faktu, że nie wiadomo skąd dokleja mu się /var/www.
Wiadomo skąd - z DocumentRoot
Кто жопой родился, чижиком не помрёт
nix1
Piegowaty Guziec
Piegowaty Guziec
Posty: 8
Rejestracja: 17 cze 2009, 17:00
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME

Odp: [apache2] mod_rewrite - błąd 404

Post autor: nix1 »

No dobrze, ale skoro już mam czytać dokumentację apacza :) to wg opisu DocumentRoot:
Unless matched by a directive like Alias, the server appends the path from the requested URL to the document root to make the path to the document.
A ja właśnie mam alias, więc IMHO nie powinien tak robić.
DocumentRoot nie mogę zmienić na inny, bo ma zasięg na całego vhosta.

Jak przeniosę katalog testowy gdzieś do wewnątrz /var/www to działa tak jak trzeba, ale to raczej średnio mnie zadowala.

EDIT:
Próbowałem włączać moduł userdir, ale powodowało to ten sam problem.

W sumie problem poradziłem sobie wyrzucając alias i zamiast tego zrobiłem sobie symlink /var/www/pawel -> /home/pawel/public_html . Jest OK, ale nadal nie wiem jak to powinno być prawidłowo :)

Dzięki za pomoc i pozdrawiam!
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Odp: [apache2] mod_rewrite - błąd 404

Post autor: ethanak »

nix1 pisze:No dobrze, ale skoro już mam czytać dokumentację apacza :) to wg opisu DocumentRoot:
Miał czytać całą o mod_rewrite a nie kawałek o DocumentRoot - łapiesz różnicę?
W sumie problem poradziłem sobie wyrzucając alias i zamiast tego zrobiłem sobie symlink /var/www/pawel -> /home/pawel/public_html . Jest OK, ale nadal nie wiem jak to powinno być prawidłowo :)
Prawidłowo powinno być (jak czegoś nie pokręciłem, z pamięci piszę, w każdym razie coś podobnego):

Kod: Zaznacz cały

RewriteRule ^alice.html$ bob.html [PT]
Alias /pawel/ "/home/pawel/public_html/"
(ew. [PT,L] - zależy od tego co masz dalej)

Przy okazji - Twój przypadek jest dokładnie w dokumentacji mod_rewrite opisany, z wyjaśnieniem dlaczego tak się dzieje, w jakiej sytuacji tak się dzieje i podaniem prawidłowego zapisu. Cóż - traktowanie forum Ubuntu (tudzież paru innych publicznych miejsc w sieci) jako interfejsu do dokumentacji (czy Googla) zaczyna być nagminne...

Wstyd!
Кто жопой родился, чижиком не помрёт
ODPOWIEDZ

Wróć do „Sieci, serwery, Internet”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 29 gości