2013-02-28 27 views
17

Chcę przepisać http://example.com/articles.html#first-article z http://example.com/articles/first-article'hash' url przepisać w .htaccess

Czy można przepisać?

Próbowałem za pomocą następujących, ale nie działa dla mnie:

RewriteRule ^articles/(.+)$ /articles\.html\#$1 
+1

Jak odpowiedział @fab, fragment nie został wysłany na serwer. Możesz skonfigurować stronę catch-all i użyć JavaScript do przekierowania. – bouke

Odpowiedz

19

Nie, to nie jest możliwe. Fragment adresu URL (wszystko od #) nie zostanie nawet wysłane na serwer.

Może chcesz rozważyć rozwiązanie oparte na języku JavaScript, w którym rzeczywista zawartość zostanie załadowana za pośrednictwem AJAX zależnie od fragmentu. Tutaj znajdziesz przydatne informacje na temat tej metody: What's the shebang/hashbang (#!) in Facebook and new Twitter URLs for?

+7

To powinno zostać anulowane jako poprawna odpowiedź, ponieważ jest niepoprawna. Odpowiedź @ faa poniżej jest w rzeczywistości poprawna. – designermonkey

+7

Zależy od pytania. Odpowiedź @faa jest poprawna, ale nie rozwiązuje problemu oryginalnego plakatu. –

+1

Dobrze, byłem trochę zmęczony, kiedy przeczytałem to wszystko po raz pierwszy, moje złe. – designermonkey

34

Można dodać # w adresie podstawiania za pomocą flagi NE. Sprawdź

Więc można spróbować to:

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !articles\.html  [NC] 
RewriteCond %{REQUEST_URI} ^/articles/([^/]+)/? [NC] 
RewriteRule .*  /articles.html#%1   [R,NE,L] 

przekierowuje

http://example.com/articles/parameter

Aby

http://example.com/articles.html#parameter

Podano, że łańcuch articles zostanie naprawiony, a zakłada się, że zmienna jest parameter.

+18

Przekierowanie ** na ** kotwicę nie było pytaniem. –

+7

To nie odpowiada na to pytanie, ale jest użyteczne. – zardilior

+0

Podobny problem tutaj nie mogę rozwiązać. http://stackoverflow.com/questions/31859377/why-does-this-htaccess-rewriterule-athe-includes-a-fail – user1452893

Powiązane problemy