我想要像 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/