DirectoryIndex w .htaccess

0

Temat poruszany setki razy, ale nigdzie nie znalazłem rozwiązania mojego problemu.

Na początek może prosiłbym o to, żeby się ktoś podzielił ze mną swoją wiedzą, jak od początku do końca ma wyglądać plik .htaccess, w którym chcę zrobić tylko jedną jedyną rzecz - ustawić inną stronę startową niż index.html lub index.php?

Mój problem polega na tym, że gdy umieszczę plik .htaccess w katalogu, gdzie mam swoją stronę www, to wszystko przestaje działać:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, root@xxxx and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.

error_log pokazuje coś takiego:

[Fri May 11 0808 2012] [alert] [client XXX.XXX.XXX.XXX] /var/www/htdocs/nazwa_strony/.htaccess: DirectoryIndex not allowed here

(oczywiście zamiast XXX.XXX.XXX.XXX] jest mój adres IP).

Na forach znalazłem różne podpowiedzi, że mam w sekcji <Directory> wstawić linię AllowOverride All, czy też AllowOverride Indexes, ale mam wrażenie, że popełniam błąd gdzieś na początku, bo nie wiem, jak ma wyglądać struktura całego tego pliku .htaccess. Dotychczas używałem go do RewriteRule i działało fajnie. Dodam, że strona stoi na linuxie Slackware, a w pliku /etc/apache/httpd.conf są m.in. takie wpisy:

(...)
LoadModule dir_module         libexec/apache/mod_dir.so
(...)
AddModule mod_dir.c
(...)
<Directory />
    Options FollowSymLinks
    AllowOverride FileInfo
</Directory>
(...)
<IfModule mod_dir.c>
    DirectoryIndex index.html index.php
</IfModule>
(...)
AccessFileName .htaccess
(...)
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>
(...)

Od razu powiem, że nie mogę zmienić linii "DirectoryIndex index.html index.php" na "DirectoryIndex start.html", bo na tym serwerze działa kilka stron i tylko w jednej chcę zmienić stronę startową.

Strona postawiona jest w katalogu /home/nazwa_uzytkowski/nazwa_strony
Natomiast jego podlinkowanie (jak widać w error_log-u) jest do katalogu /var/www/htdocs/nazwa_strony/

Jak w takim wypadku od początku do końca ma wyglądać plik .htaccess?
Ja napisałem go tak, jak poniżej i nie działa:

DirectoryIndex start.html

<Directory "/var/www/htdocs/nazwa_strony/">
    AllowOverride All
</Directory>

Z góry dzięki za pomoc!

0

Teraz zauważyłem, że samo wpisanie:

<directory /> </directory>

...do pliku .htaccess powoduje Internal Server Error... Coś mam więc namieszane w konfiguracji Apache?

0

Co to cholera ma być? Jak dajesz krótkie zakończenie tagu / > a potem < / ....

1

I mówisz, że w Slackware absolutnie cała konfiguracja Apache jest w jednym pliku? Gdzie trzymasz konfigurację poszczególnych vhostów?

AllowOverride w pliku .htaccess ma mały sens, bo to byłoby ustawianie uprawnień samemu sobie.

Wstaw gdzieś na koniec httpd.conf:

<Directory /var/www/htdocs/nazwa_strony/>
	AllowOverride Indexes
</Directory>

I teraz będzie można tam wstawić plik .htaccess z dyrektywą DirectoryIndex.

0
ubuntuser napisał(a):

Co to cholera ma być? Jak dajesz krótkie zakończenie tagu / > a potem < / ....

Przepraszam, oczywiście to była "literówka". Wklejając tutaj wsysło mi moją ścieżkę do katalogu.

Mój plik .htaccess wygląda teraz tak:

DirectoryIndex start.html

<Directory /var/www/htdocs/nazwa_srony/>
        AllowOverride Indexes
</Directory>

...i nie działa.

2

w .htaccess nie możesz używać <Directory>
cała zawartość .htaccess już tak jakby jest w <Directory>

AllowOverride musisz wpisać w httpd.conf - tak to właśnie działa, inaczej ta opcja by nie miała sensu

czemu po prostu nie zrobisz pliku index.php w którym zaincludujesz start.html
ewentualnie użyj mod_rewrite

0
unikalna_nazwa napisał(a):

w .htaccess nie możesz używać <Directory>

Próbowałem pisać bez <Directory></Directory> i był ten sam problem. Dlatego zacząłem pisać z <Directory></Directory>

unikalna_nazwa napisał(a):

czemu po prostu nie zrobisz pliku index.php w którym zaincludujesz start.html

Bo index.php mam już właśnie zajęty przez co innego, a nastąpiła zmiana koncepcji i nie może być już on startowym. Dużo pisania ;)

Na szczęście pomoc Rev przyniosła skutek.
Do pliku httpd.conf dodałem zapis:

<Directory /var/www/htdocs/nazwa_strony/>
        AllowOverride Indexes
</Directory>

...i teraz już DirectoryIndex w tym katalogu działa. Dzięki!
user image <- to prawda :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1