19

我想http://example.com/articles.html#first-article重写http://example.com/articles/first-article

是否可以重写?

我尝试使用以下但对我不起作用:

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

2 回答 2

45

#可以在替换 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假设是可变的。

于 2013-02-28T12:05:32.813 回答
20

不,这是不可能的。URL 片段(从开始的所有#内容)甚至都不会发送到服务器。

也许您想考虑一个基于 JavaScript 的解决方案,其中实际内容将通过依赖于片段的 AJAX 加载。您将在此处找到有关此方法的一些有用信息:Facebook 和新 Twitter URL 中的 shebang/hashbang (#!) 有什么用?

于 2013-02-28T10:27:47.917 回答