将特定虚拟URL重定向到index.html

时间:2015-04-28 11:05:51

标签: javascript apache .htaccess mod-rewrite

我目前正尝试将我的语言特定虚拟网址重新编入index.html。 可悲的是它不起作用所以我在这里问你。

在我的index.html页面上,我使用历史记录api设置虚拟网址,如下所示:

history.pushState(null, null, 'de');

这样工作完全正常,但是当我手动输入网址时,服务器会尝试打开index.php / de,该数据存在。

我的想法是将所有虚拟网址重定向,让我们说“/ de /”和“/ en /”到index.html文件并保留初始网址。然后,我将使用js。

在index.html中进行导航和内容加载
  • domain.com/de - >打开index.html并保留原始网址
  • domain.com/en - >打开index.html并保留原始网址

我的mod_rewrite代码:

RewriteEngine on
RewriteRule "^/de?$" "/index.html"

遗憾的是,这段代码没有重定向。我的服务器日志说无法找到domain.com/de。

要解决这个问题的想法吗?

欢呼声 马可

1 个答案:

答案 0 :(得分:1)

当您在htaccess中时,

RewriteRule会删除前导斜杠 因此,您正在尝试匹配错误的路径(这就是为什么它不起作用)。

此外,在规则中删除"并在之后添加L标记。

您可以用这个替换代码

RewriteEngine On
RewriteRule ^(?:de|en)$ /index.html [L]

注意:确保Apache配置中 mod_rewrite 已启用(以及 htaccess 文件允许)

编辑:考虑下面的评论

RewriteEngine On
RewriteRule ^(?:de|en)(?:$|/.+) /index.html [L]