2010-03-04 16 views
5

Buduję małe środowisko PHP dla tworzonych przeze mnie stron internetowych i chciałem wiedzieć, czy mogę polegać na mod_rewrite dostępnym na większości hosterów.Czy mogę polegać na mod_rewrite?

  • Czy korzystanie z niego jest nawet dobrym pomysłem? Istnieje już wiele dobrych punktów (jeden punkt wejścia, "piękny", czytelne adresy URL)

  • Gdzie to nie jest dostępne?

  • Czy powinienem dodać alternatywę w ramach, jeśli mod_rewrite nie jest dostępny na tym hosterze?

Odpowiedz

5

mod_rewrite jest ogólnie dostępny. Jeśli nie jest dostępny na serwerach hostów, upuść je.

+0

Mówię o hostach mojego klienta. – someone

+0

Jak to zmienia odpowiedź? Wciąż jest ogólnie dostępny i powinieneś przełączyć klientów na inny host, jeśli nie. – ceejayoz

+0

Jeśli podejrzewasz, że klient może nie mieć dostępu do mod_rewrite, powinieneś zbudować framework na podstawie tego założenia. – thetaiko

2

Jeśli tworzysz aplikację publicznie dostępną, powinieneś wziąć pod uwagę, że mod_rewrite może nie być dostępny i wspierać alternatywę. AcceptPathInfo jest jeden.

+0

+1 im więcej oferowanych opcji, tym większa szansa na produkt. –

0

mod_rewrite jest właśnie dla apache więc jeśli trzeba pracować na IIS lub coś innego masz zamiar mieć problemy, ale w PHP można również użyć tego:

private function getURI() 
{ 
    $uri = ""; 

    if (isset($_SERVER['PATH_INFO'])) 
     $uri = getValueFrom($_SERVER, 'PATH_INFO', @getenv('PATH_INFO')); 
    elseif (isset($_SERVER['ORIG_PATH_INFO'])) 
     $uri = getValueFrom($_SERVER, 'ORIG_PATH_INFO', @getenv('ORIG_PATH_INFO')); 
    else 
     $uri = ""; 

    $scriptname = basename($_SERVER['SCRIPT_FILENAME']); 
    if (strpos($uri, $scriptname) > -1) 
     $uri = substr($uri, strpos($uri, $scriptname) + strlen($scriptname), strlen($uri)); 

    return $uri; 
} 

Zmień adresy URL jest dobra praktyka, właściwie jest szeroko stosowany w internecie i to poleca SEO, ponieważ jest lepiej mieć to:

domain.com/aboutus

do tego

domain.com/index.php?app=main & działania = wykazują & identyfikator modułu = 1

3

Mod_rewrite jest zwykle dostarczony w większości Apache gospodarze ci dzień. Jednak nie jest to zbyt trudne, aby obejść jego brak, a robiąc to, upewnisz się, że ludzie utknęli na/z hostem/personelem IT, który go wyłączył, lub z hostem/personelem IT prowadzącym IIS, itp.

Większość nowo tworzonych frameworków lub aplikacji korzysta z mod_rewrite do przechwytywania wszystkich żądań URL za pomocą pojedynczego pliku ładującego z przodu (zwanego Bootstrapping, Frontloading pattern, itp.). Część adresu URL, która nie jest nazwą domeny, jest przetwarzana do jakiegoś obiektu, a ten obiekt jest używany zawsze, gdy potrzebujesz dostępu do adresu URL.

Kiedy mod_rewrite nie jest dostępny, adresy URL w postaci

http://example.com/index.php/foo/baz/bar 

są używane zamiast. Żądanie powyższego adresu URL jest obsługiwane przez plik index.php. Następnie można analizować jedną z tych zmiennych serwerowych jak

$_SERVER['REQUEST_URI'], $REQUEST['PATH_INFO'], etc. 

do jakiegoś przedmiotu (ten sam obiekt byłoby użyć jeśli miał mod_rewrite) i korzystać z tego obiektu, kiedy tylko potrzeba dostępu do informacji URL.

Tak czy inaczej, reszta ramy/aplikacji po prostu uzyskuje dostęp do obiektu i nie musi martwić się o to, w jaki sposób informacje tam dotarły.

Additional Reading

0

Jest ona dostępna w większości serwerów - ale jeśli podejrzewasz, że tak nie jest, należy wykonać dynamiczny sposób, aby pobierał linki - można wtedy mieć predefiniowaną stałą że zmiany przed wszystkim, co mówi, czy nie mod_rewrite jest dostępny. Następnie możesz pobrać adresy URL za pomocą tej stałej, aby określić, co się stanie.

0

Myślę, że jakaś przyzwoita aplikacja powinna korzystać z mod_rewrite, a większość hostów internetowych oferuje to. Jeśli nie oferują, zejdź z nich.

Ponadto, nie tylko mod_rewrite jest dobrym rozwiązaniem do wykorzystania, ale również inne ustawienia php podobnych php_valuemax_execution_time i tak dalej, aby mieć pewność, że dostosowując swoje środowisko, aby dopasować swój cel aplikacji.

Powiązane problemy