2013-02-28 5 views
17

Я хочу переписать http://example.com/articles.html#first-article с http://example.com/articles/first-article'хэш' URL Rewrite в .htaccess

Можно ли переписать?

Я попытался использовать следующие, но не работает для меня:

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

Как ответил @fab, фрагмент не отправляется на сервер. Вы можете настроить всю страницу и использовать JavaScript для перенаправления. – bouke

ответ

19

Нет, это не возможно. Фрагмент URL (все от #) даже не отправляется на сервер.

Возможно, вы хотите рассмотреть решение на основе JavaScript, где фактический контент будет загружен через AJAX в зависимости от фрагмента. Здесь вы найдете полезную информацию об этом методе: What's the shebang/hashbang (#!) in Facebook and new Twitter URLs for?

+7

Это должно быть отменено как правильный ответ, так как он неверен. Ответ @ faa ниже на самом деле правильный. – designermonkey

+7

Зависит от вопроса. Ответ @faa правильный, но он не затрагивает вопрос об исходном плакате. –

+1

Хорошо, я немного устал, когда впервые прочитал все, что плохо. – designermonkey

34

# может быть добавлен в URL-адрес замены с помощью флага NE. Проверить:

Таким образом, вы можете попробовать это:

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

Перенаправление

http://example.com/articles/parameter

Для

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

Строка articles считается фиксированной, а parameter считается переменной.

+18

Перенаправление ** на ** якорь не был вопросом. –

+7

Это не отвечает на этот вопрос, но полезно – zardilior

+0

Аналогичная проблема здесь не решена. http://stackoverflow.com/questions/31859377/why-does-this-htaccess-rewriterule-that-includes-a-fail – user1452893