2012-12-25 12 views
5

Używam strony z włączoną obsługą AJAX, która obsługuje HTML hash i HTML5 pushstate().httpd.conf i HTML5 pushstate()

Właśnie przeprowadziłem migrację do instancji AWS EC2 (serwer linuksowy z apache) i obie witryny działają poprawnie.

Jedyny problem jaki napotkałem, to gdy odświeżam stronę hash HTML4, wyświetla się właściwa strona.

Jednak gdy odświeżam stronę HTML5 jak http://www.datingjapan.co/conversations pojawia się następujący komunikat o błędzie:

enter image description here

Wydaje się, że Apache próbuje przejść do folderu „converstations” a następnie po prostu zadzwoń miejsce " index.php ", który następnie za pomocą jquery ładuje poprawną stronę.

Czy ktoś może doradzić, co może być problemem tutaj. Zakładam, że jest to ustawienie httpd.conf.

thx

+0

Myślę, że masz na myśli 'pushstate()' - ['popstate' to zdarzenie, a nie funkcja] (https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/popstate). Również "tag hash" nie jest odpowiedni w tym kontekście - jeśli odnosisz się do fragmentu adresu URL po znaku haszowania # #, to tylko hash, a nie tag hash. –

+0

thankyou zaktualizowałem pytanie .. – Adam

+0

Bardzo proszę. Zaktualizowałem swoją odpowiedź: 'Alias' nie jest drogą do zrobienia. –

Odpowiedz

4

Jeśli próbujesz użyć pliku index.php jako pewnego rodzaju bootstrap może chcesz spróbować to w pliku .htaccess:

<IfModule mod_rewrite.c> 
   RewriteEngine on 
   RewriteCond %{HTTP_HOST} !^(www\.).+$ [NC] 
   RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L] 

   RewriteCond %{REQUEST_FILENAME} !-f 
   RewriteCond %{REQUEST_FILENAME} !-d 
   RewriteCond %{REQUEST_FILENAME} !-l 
   RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

Zasadniczo będzie to przekierować wszystkie żądania od non-www do www, a następnie, jeśli nie jest to plik lub katalog, to przekazuje wniosek do pliku index.php.

+1

działa doskonale - umieścić na stronie internetowej .htaccess - bardzo doceniane ... – Adam

+0

Należy zauważyć, że jeśli umieścisz te dyrektywy w pliku httpd.conf zamiast .htaccess, musisz umieścić je w znaczniku Directory, np. Aaron

3

Nie używałem pushState() siebie, ale jeśli przeglądarka wysyła żądanie do /conversations do www.datingjapan.co, a następnie Apache będzie rzeczywiście wyglądać plik lub folder o nazwie „rozmowy” w swojej główny dokument, chyba że powiesz mu, aby zrobił coś innego.

Jeśli chcesz, aby wszystkie adresy URL na www.datingjapan.co być obsługiwane przez jednego pliku index.php, a następnie można użyć the AliasMatch directive w ustawieniach Apache pliku:

AliasMatch ^.*$ /index.php 

myślę spowoduje we wszystkich adresach URL obsługiwanych przez index.php. (Nie jestem bardzo gorąco od konfiguracji Apache chociaż, więc mogę się mylić).