我有一个使用angularJS构建的网站。我目前没有启用hashbang网址或html5模式。因此,URL的结构为:/#/
我最近看到我的网站在谷歌上弹出(我很高兴)。但是,它指示我排除所需的https://www.example.com/example
例如#/
。因此,我得到了404错误(我不是很高兴)。
所以我最初的反应是在我的.htaccess文件中写一个301重定向,将{{1}}附加到任何没有它的网址上。
但是,我不确定如何实际做到这一点。如果有人知道如何写这个,或者有一个更优雅的解决方案,你的意见将非常感激!
答案 0 :(得分:1)
在根.htaccess文件中:
RewriteEngine On
RewriteRule ^(example)$ /#/$1 [R=302,L,NE]
这实际上只重定向/example
。 NE
标志是必要的,以防止#
(特殊字符)被编码百分比。 $1
反向引用与RewriteRule
模式中带括号的子模式匹配 - 在这种情况下,它只是“示例” - 保存您输入两次!但是当你引入一个更复杂的模式(见下文)时,这是强制性的。
请注意,我上面使用了302临时重定向。当您确定它正常工作时,将其更改为301重定向。浏览器不缓存临时重定向,因此它使测试更容易。
如果你需要一些更通用的东西,那么你需要一个模式 - 但只能根据你的需要制作它。例如,要仅匹配字母a-z(小写),则:
RewriteRule ^([a-z]+)$ /#/$1 [R=302,L,NE]