2010-01-26 10 views

Odpowiedz

1

Jakiej wersji Apache używasz? RewriteBase nie powinno być konieczne, gdy przepisujesz z katalogu głównego. Jeśli nie, możesz go potrzebować. Na przykład, część moich obecnych konfiguracjach (Apache 2.2) dla jednego z moich blogów wygląda następująco, i działa:

RewriteEngine On  
RewriteRule ^/$ /blog/ [R] 
RewriteRule ^/wordpress/(.*) /blog/$1 [R] 
11

To nie jest chyba RewriteBase który sprawia, że ​​praca reguły tyle jako wiodący ukośnik. Drugi argument do RewriteRule nie jest wyrażeniem regularnym. Zamiast tego, spróbuj:

RewriteRule ^/?a/b$ c 

Podczas stosowania RewriteRule z .htaccess, wiodący ukośnik będą usuwane z zawartości, co spowoduje, że wzór na niepowodzenie, jeśli zawierają go. Rozpoczynając wzorzec za pomocą "^ /?", Będzie działać w głównych plikach konfiguracyjnych oraz w plikach konfiguracyjnych per-directory.

Zapoznaj się z detailed mod_rewrite documentation, aby dowiedzieć się, jak działa silnik przebudowy i znaczenie RewriteBase.

Edit: Jak wspomniano w mod_rewrite technical details i opisane w dokumentacji dla RewriteRule i RewriteBase URL został przetłumaczony na ścieżkę do czasu zasady per-katalogu przepisujące są oceniane. Mechanizm przepisywania nie ma już adresu URL do pracy. Zamiast tego usuwa prefiks katalogu lokalnego (katalog zawierający plik .htaccess), który kończy się ukośnikiem. Załóżmy na przykład, że użytkownik żąda "/var/www/foo/bar/baz.html" i jest ustawiona reguła przepisywania w "/var/www/foo/.htaccess". Przed każdą regułą, silnik do przepisywania będzie usuwał "/ var/www/foo /", pozostawiając "bar/baz.html" do dopasowania do reguły przepisywania. Po przetworzeniu reguły prefiks katalogu lokalnego jest poprzedzony (chyba że zamiennik zaczyna się od "http: //"). Po przetworzeniu wszystkich reguł przepisywania, baza do przepisywania, jeśli jest ustawiona, zastępuje prefiks katalogu lokalnego; jeśli nie, główny katalog dokumentu jest usuwany. Odtworzony adres URL jest następnie ponownie wprowadzany jako żądanie podrzędne.

+0

Czy możesz wyjaśnić, dlaczego wiodący slash jest usunięty po zastosowaniu z '.htaccess'? – user198729

Powiązane problemy