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] 重写规则 ^(.*)$ /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 重写以包含 #!的主要内容,如果未能解决你的问题,请参考以下文章
Apache .htaccess 重写规则以删除 .php 文件扩展名