如何使用PHP / Apache(mod_rewrite)将URL重定向为哈希标记?

时间:2011-08-21 05:44:02

标签: apache mod-rewrite redirect

当直接点击/songs/123这样的网址时,我想将该网址重写/重定向到/index.php#/songs/123

我认为使用服务器执行此操作比创建重定向的“虚拟”页面更有效。

例如,我使用jQuery.address来“捕获”任何<a/>标记,并将其href附加为哈希标记,从而可以无缝地导航网站并保持浏览器历史记录的准确性。我仍然希望这些href成为相应内容的有效链接,但是如果有人在新标签或类似标签中打开它。

2 个答案:

答案 0 :(得分:7)

由于URL片段仅在客户端上很重要,因此您需要强制客户端重定向。

RewriteRule ^/songs/(.*) /index.php#/songs/$1 [R,L,NE]

答案 1 :(得分:1)

尝试这样的事情(在.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>