Как я могу использовать PHP / Apache (mod_rewrite) для перенаправления URL-адресов в качестве хеш-тегов? - PullRequest
3 голосов
/ 21 августа 2011

При прямом обращении к URL-адресу, например /songs/123, я хочу переписать / перенаправить этот URL-адрес на /index.php#/songs/123.

Я полагаю, что использование сервера для этого более эффективно, чем создание "фиктивных" страниц, которые перенаправляют.

Например, я использую jQuery.address, чтобы «поймать» любые теги <a/> и добавить его href в качестве хеш-тега, что позволяет легко перемещаться по сайту и поддерживать точность в истории браузера. Я по-прежнему хочу, чтобы эти ссылки были действительными ссылками на соответствующий контент, однако в случае, если кто-то откроет его в новой вкладке или аналогичном.

Ответы [ 2 ]

7 голосов
/ 21 августа 2011

Поскольку фрагмент URL имеет значение только для клиента, необходимо принудительно перенаправить клиент.

RewriteRule ^/songs/(.*) /index.php#/songs/$1 [R,L,NE]
1 голос
/ 21 августа 2011

Попробуйте что-то вроде этого (в вашем .htaccess):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^/songs/(.+)$ /index.php#/songs/$1 [R,L,NE]
</IfModule>

Или более экстремальный случай, который захватывает что-либо, кроме файла / каталога:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php#$1 [R,L,NE]
</IfModule>
...