htaccess 重写以包含 #!

Posted

技术标签:

【中文标题】htaccess 重写以包含 #!【英文标题】:htaccess rewrite to include #! 【发布时间】:2011-08-18 06:23:33 【问题描述】:

呼吁所有 .htaccess 大师。我需要你的帮助!

我正在尝试强制重写以包含 #!在网址中。

所以基本上我需要。 http://example.com/biography

要重写 http://example.com/#!/biography

到目前为止,我的重写规则是否会有所作为

重写引擎开启 RewriteCond %HTTPS !=on RewriteCond %HTTP_HOST ^www\.(.+)$ [NC] 重写规则 ^(.*)$ http://%1/$1 [R=301,L] RewriteCond $1 !^(images|system|files|themes|static|favicon\.ico|robots\.txt|index\.php) [NC] RewriteRule ^(.*)$ /index.php/$1 [L]

我很讨厌这些东西,所以任何帮助都将不胜感激。

另外...

我有这个测试在这个 htaccess 测试器中做我需要它做的事情。 http://htaccess.madewithlove.be/ 但是当我在我的网站上尝试它时它不会工作......

RewriteCond %REQUEST_URI !^/#!
重写规则 ^(.*)$ /#!/$1 [L]

不知道为什么它不起作用?

谢谢, 标记。

【问题讨论】:

不知道是否允许您将 url 重写为带有哈希的内容....但是可以为您重定向工作吗? # 在 url 是客户端,所以你只能通过重定向来做到这一点 【参考方案1】:

让你的 .htaccess 像这样:

Options +FollowSymlinks -MultiViews
RewriteEngine on

RewriteCond %HTTPS !=on
RewriteCond %HTTP_HOST ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteRule ^(biography)/?$ /#!/$1 [R,L,NE,NC]

RewriteCond $1 !^(images|system|files|themes|static|favicon\.ico|robots\.txt|index\.php) [NC]
RewriteRule ^(.*)$ /index.php/$1 [L]

请记住,您不能有条件检查 .htaccess 中的 /#!,因为该部分仅在浏览器中处理,不会发送到 Web 服务器。

【讨论】:

记录:它主要是标志[R] 起到了作用 - 导致 HTTP 302 重定向并使浏览器能够处理锚点(# 之后的部分由客户端处理)

以上是关于htaccess 重写以包含 #!的主要内容,如果未能解决你的问题,请参考以下文章

简单的 .htaccess 重写以传递 1 个参数

.htaccess 重写以在末尾强制使用斜杠

Apache .htaccess 重写规则以删除 .php 文件扩展名

htaccess - 重写具有同名目录的文件

.htaccess 中的重写引擎以捕获不以 html 结尾的文件

使用 .htaccess 重写动态子域