0

我正在尝试在我正在处理的网站上设置一些别名。目前,这是我在本地主机上设置的仅限前端的特定构建。我的问题源于需要深度链接到页面的特定部分。当用户向下滚动页面时,URL 会通过 JavaScript 更新。

例如,当我加载页面时,我的 URL 是:local-www.blahblah.com/en-US/home.html

当我向下滚动页面并看到某些元素时,URL 会发生变化。例如,它可能变成...

local-www.blahblah.com/en-US/category/title-1/

local-www.blahblah.com/en-US/category/title-2/

我需要做的是通过刷新或直接输入转到该新 URL,并在保持 URL 完整的同时调出home.html文件。

例如:我输入local-www.blahblah.com/en-US/category/title/并将home.html作为该 URL 加载。

我以为我可以简单地在我的虚拟主机配置中使用带有通配符的别名来执行此操作,但这对我不起作用。

<VirtualHost *:80 *:82>
    DocumentRoot "/Library/WebServer/blahblah.com/deploy"
    ServerName local-www.blahblah.com
    Alias /en-US/* /en-US/home.html
</VirtualHost>

我的 Apache 知识是初学者水平,所以这里的任何帮助将不胜感激。

4

1 回答 1

1

我认为最好的方法是使用 mod_rewrite,首先,您需要启用 modrewrite。如果使用 debian/ubuntu,则需要在目录 /etc/apache2/mods-enabled 中创建符号链接

sudo ln -s ../mods-available/rewrite.load .

然后在您的 VirtualHost 中添加此配置

RewriteEngine On
RewriteRule ^/en-US/?(.*)$ /en-US/home.html [L]

第一行启用我使用正则表达式来限制重写规则的模块:

^/en-US = URL 必须以 /en-US
/? = / 是可选的
(.*)$ = 任何字符,我使用 () 对内容进行分组,因此您可以选择使用变量 $1 重用它

这是一个使用变量的示例:

RewriteEngine On
RewriteRule ^/en-US/?(.*)$ /en-US/home.php?Var=$1 [L]
于 2013-07-30T17:01:43.533 回答