2009-07-09 12 views
6

Mam następującą regułę w mojej bieżącego pliku .htaccess aby przekierować /videos/login/ żądania /videos/login.phpZasada htaccess do przekazania/logowania/i/logowania do tej samej strony?

RewriteRule login/ /videos/login.php 

Działa to dobrze, jeśli mam dostęp do strony logowania za pomocą http://mysite.com/videos/login/ ale gdy próbuję uzyskać dostęp do tej samej strony (przy użyciu http://mysite.com/videos/login bez kończenia slash), to daje mi błąd "404 page not found".

Proszę mi powiedzieć, jaka będzie prawidłowa reguła pliku .htaccess, aby każda prośba o numer http://mysite.com/videos/login/ lub http://mysite.com/videos/login wskazywała tę samą stronę /videos/login.php.

Dzięki

Odpowiedz

13

Wystarczy dokonać ukośnik opcjonalny:

RewriteRule ^videos/login/?$ /videos/login.php 

Ale należy lepiej wykorzystywać tylko jeden wariant (z lub bez trailing slash) i przekierować jeden do drugiego:

# add trailing slash 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .*[^/]$ /$0/ [L,R=301] 

# remove trailing slash 
RewriteRule (.*)/$ /$1 [L,R=301] 
+0

@Gumbo twoja zasada działa poprawnie, otwierając tę ​​samą stronę zi bez ukośnika, ale chcę, aby każdy, kto uzyska dostęp do/filmów/logowania, zostanie przekierowany do/videos/login/czy jest to możliwe za pomocą htaccess. – Prashant

+0

Właśnie wspomniałem obie opcje. Jeśli chcesz mieć ukośne cięcie, po prostu użyj pierwszego. – Gumbo

+0

Ale #add końcowe ukośnik doda ukośniki do wszystkich moich adresów URL, których nie chcę, są wybrane adresy URL, dla których chcę ten obiekt – Prashant

1

Korzystanie z mod_rewrite

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/videos/login/?$ 
RewriteRule (.*) /videos/login.php [L,R=301] 
0
redirect 301 /videos/login/index.html http://yoursite.com/videos/login.php 

The server will change the address http://mysite.com/videos/login/ and http://mysite.com/videos/login both to http://mysite.com/videos/login/index.html, based on the configuration but this is default. Before it encounters a 404 this address is redirected to the new one. At least this works at my site.

musieli użyć pre ponieważ witryna pozwala mi pisać tylko jedno hiperłącze:/

2

Ten drobny praca dla mnie:

RewriteRule^login (/ |) $ /videos/login.php

Powiązane problemy