javascript - 干净的 url 在没有标签的前端管理

标签 javascript html apache .htaccess web

我想要像 example.com/amsterdam 这样的 url,我知道你可以像这样 example.com/#/amsterdam。

但我不想在我的 URL 中包含/#/部分。我想我需要为此修改我的 .htaccess,但我没有在互联网上找到一个很好的例子。

我想要的是当有人导航到 example.com/amsterdam 我希望它转到我可以通过 javascript 处理/amsterdam 的主页,这样我就可以在主页上显示 amsterdam 文本,并将 example.com/amsterdam 放在我的 sitemap.xml 中供 google 使用。

我尽力解释了这一点。如果您对如何完成这项工作有任何预感,请随时回复

最佳答案

好吧,这很难开始工作,但我按以下方式做到了。

我将以下行添加到我的 .htaccessFallbackResource index.php 为此,请确保您使用的是较新版本的 apache,因为这是 apache 的一个相对较新的功能。它的作用是当它找不到您请求的页面时,它会转到 index.php 页面而不是 apache 的标准 404。

然后,我添加了一个 index.php 页面,其中包含以下代码

$whitelist = [
    "Rotterdam",
    "Amsterdam",
];

$cwhitelist = [];

foreach ($whitelist as $key => $value) {
    array_push($cwhitelist,strtolower($value));
}

$urlpath = strtolower(basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)));
$inarr = in_array($urlpath,$cwhitelist);
if(!$inarr){
    $actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    if($actual_link != "https://www.slotenmakergroep.nl/"){
            if( $actual_link != "http://www.slotenmakergroep.nl/"){
                session_start();
                $_SESSION["link"] = $actual_link;
                header("Location: 404.php",true,301);
            }

    }
}

它的作用如下,我有一个我批准的白名单链接的白名单数组,然后将它们全部设为小写。

之后,我获取 url 和斜线后的文本,并检查该文本是否在数组中。如果它在数组中,我还会检查它是 http 链接还是 https 链接。

如果链接不在白名单中,我会将他们发送到 404.php 页面并在 session 中保存他们试图访问的链接。

关于javascript - 干净的 url 在没有标签的前端管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52790909/

相关文章:

javascript - 使用&符号和插入符号的 Handlebars 模板

javascript - angular-ui-tree 拖动不起作用

javascript - 如何使用“添加新”按钮在 w2ui 网格中添加新项目?

html - 可滚动 div 中的绝对定位元素

php - "Class not found"使用 php/silex

javascript - 交叉过滤平均组

html - Magento HTML 问题 - 侧边栏显示在页面内容下方

javascript - 如果一定数量的数字已经有值,则阻止用户在输入字段中输入数字

apache - apache Shiro 可以用来构建身份提供者吗?

apache - 关于 SSL 重定向