2009-05-14 25 views
9

Jaki jest najlepszy sposób, aby przepisać niczego poniżej "/ some/podkatalog" na "/ niektóre/podkatalog/projekty" jak z tego:.htaccess URL Rewrite do podkatalogu

http://www.mydomain.com/some/subidr/test/ 

... do tego:

http://www.mydomain.com/some/subdir/projects/test/ 

znalazłem similar question pisał, ale rozwiązanie nie wydaje się działać w moim przypadku. Moja obecna próba tak daleko (co nie wydaje się działać):

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/projects/.*$ 
RewriteRule ^(.*)$ /projects/$1 [L] 

EDIT: Zapomniałem wspomnieć plik .htaccess musiałby siedzieć wewnątrz/some/podkatalog jak nie mam pisz dostęp do serwera sieciowego serwera.

Odpowiedz

11

Jest to rozwiązanie w końcu zabrał się do pracy:

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/some/subdir/projects/.*$ 
RewriteRule ^(.*)$ /some/subdir/projects/$1 [L] 
+5

Wygląda jak to przekierowuje, a nie przepisuje – zoltar

6

Wypróbuj ten przepis w pliku konfiguracyjnym .htaccess w katalogu głównym dokumentu serwera:

RewriteEngine on 
RewriteRule !^some/subdir/projects(/|$) some/subdir/projects%{REQUEST_URI} [L] 

Jak chcesz użyć tej reguły w katalogu /some/subdir/ zmienić zasadę następująco:

RewriteRule !^projects(/|$) projects%{REQUEST_URI} [L] 

A jeśli chcesz przekierować żadnych żądań /some/subdir/projects/foobar do 0.123.foobar, umieścić tę regułę powyżej poprzedniego wymienić:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /some/subdir/projects[/?\s] 
RewriteRule ^some/subdir/projects/?([^/].+)?$ /some/subdir/$1 [L,R=301] 
+0

Jak mogę to zrobić za pomocą pliku .htaccess wewnątrz „/ some/podkatalog”, ponieważ nie mam dostępu do zapisu internetowej korzenia serwującego ? – Wilco

+0

Usuń 'some/subdir /' zarówno z wzorca, jak i zamień go. Reszta powinna być w porządku. – Gumbo

1

użyłbym to:

RewriteEngine On 
RewriteRule ^(/some/subdir)/(.*)$ $1/projects/$2 

To przekieruje /some/subdir/<anything> do /some/subdir/projects/<anything>.

Zauważ, że prowadząc / jest rzeczywiście konieczne, aby dopasować początek adresu URL, chyba masz RewriteBase / ustawić gdzieś.

+0

Główny ukośnik jest wymagany tylko wtedy, gdy jest używany w konfiguracji serwera lub hosta wirtualnego. W pliku konfiguracyjnym .htaccess przedrostek katalogu, jeśli został usunięty przed testowaniem, a później dołączony do podstacji. – Gumbo

+0

Miałem ogromny ból głowy z/brakujący w podfolderze, - niewiele informacji o tym problemie, ale jeśli chcesz przekierować tylko do podfolderu, z którego faktycznie pochodzisz, wykonaj następujące czynności: - RewriteRule /? ([^ /]. +)? $ http://examplen.com/$1 [R = 301, L] – GAV

Powiązane problemy