Apache 在 URL 中隐藏查询字符串但保持 URL 正常工作

2024-02-10

我有两种类型的 URL,但它们可以在查询字符串之后包含任何内容,因为我们有 1000 个 URL/帖子。

两者都有 /?id=/ ,我希望隐藏/删除它,但页面仍然加载。

这些页面是 WordPress 中的自定义 slugs,我没有在 Apache 2.4 中启用 .htaccess,因此需要通过 .conf 规则来完成

有人可以帮忙吗?这两种 URL 类型是:

https://example.com/news-and-events/news/?id=/kanpai-pandas/@KanpaiPandas/the-largest-airdrop-competition-in-web3-dd6f8f78c758 https://example.com/news-and-events/news/?id=/kanpai-pandas/@KanpaiPandas/the-largest-airdrop-competition-in-web3-dd6f8f78c758

and

https://examples.com/news-and-events/event/?id=/e/crypto-for-lawyers-in-60-minutes-watch-on-demand-tickets-363441371927 https://examples.com/news-and-events/event/?id=/e/crypto-for-lawyers-in-60-minutes-watch-on-demand-tickets-363441371927

WordPress 安装根目录位于 /news-and-events/

我可以删除查询字符串,但结果是 404,而不是原始内容/页面,这似乎不起作用。

谢谢 抢

到目前为止我的代码:

重写引擎开启

RewriteCond %{QUERY_STRING} ^(.)?id=(.)?$ [NC]

RewriteRule ^(.*)?$ $1%2? [R=301,L]


在您的 容器中尝试此操作:

<Directory "/var/www/vhosts/myhost/htdoc/news-and-events/news/">

    RewriteBase "/news-and-events/news/"
    RewriteCond "%{QUERY_STRING}" ""
    RewriteRule "(.*)" "index.php?id=/$1" [L]

</Directory>

或者,它可以用于.htaccess file:

File: /news-and-events/news/.htaccess

RewriteBase "/news-and-events/news/"
RewriteCond "%{QUERY_STRING}" ""
RewriteRule "(.*)" "index.php?id=/$1" [L]

在设计的适当路径中使用重写规则对于实现所需的功能至关重要。

怎么运行的

Using 正确的目录for 规则禁止针对其他路径测试规则,这可能会破坏通向它们的请求 URI。此外,仅针对相关请求调用规则,从而节省处理时间。

The 重写库定义什么是“本地”。到目前为止,路径将被裁剪以进行进一步处理。日志:

strip per-dir prefix: /var/www/vhosts/myhost/htdoc/news-and-events/news/
applying pattern '.*' to uri ''

请务必包括最后的/。 – 否则你会遇到问题!

By the 重写条件我们仅测试QUERY_STRING存在(这就是之后的一切?在网址中。 ——本题场景中一定不存在,但处理后会存在。 — 这将禁止 URI 在重写后进行正向匹配,并将第二次通过重写过滤器。

The 重写规则粘合缺失的部分以生成 URI?id=/“本地化”URI。重写步骤完成后,URI 的全局部分将被添加到新的完整 REQUEST_URI 之前。

而不是插入index.php?id=/仅使用?id=/本来就足以完成这项工作,但是通过添加 apache 下一步的答案“什么是正确的索引文件?”节省了处理请求的几个步骤,加快了速度。

Using [L](保留重写规则)而不是[R=301,L](资源永久移动,保留)将阻止搜索引擎学习新的URI,并且还禁止重写的URI显示在地址栏中。在内部,这是一个 302(临时重定向)。日志:

redirect to http://example.com/news-and-events/news/index.php?id=/kanp...8c758 [REDIRECT/302]

需要一个对应的人

任务是“美化地址”。因此,生成 URI 的 PHP 脚本必须更改其行为,以发出访问者和搜索引擎应该看到并单击的美化 URI。

在 php 脚本中的某个位置,URL 生成的处理结果类似于

<?php
// ....
news_path = "/news-and-events/news/";
news_uri = "/kanpa...8c758";

final_news_link = $news_path . "id=" . $news_uri;
?>

的组装final_news_link必须改为

final_news_link = $news_path . $news_uri;

所以美化后的地址将会被公布。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache 在 URL 中隐藏查询字符串但保持 URL 正常工作 的相关文章

  • .htaccess 在本地主机上给出 500 错误

    我是 MVC 框架的初学者 我正在尝试根据教程创建一个自己的 他们提供的 htaccess 文件包含 RewriteEngine On RewriteCond REQUEST FILENAME d RewriteCond REQUEST F
  • php7ts.dll 无法加载到服务器

    今天我已经安装了php7 但是当我重新启动apache时 它无法启动 尽管我再次编辑了httpd xampp conf文件到配置php7 无论如何我去了C xampp并运行apache start bat 然后我看到以下错误 Apache
  • 强制 mod_rewrite 的 RewriteRule 替换的 URL 路径

    使用 mod rewrite 执行重写时RewriteRule 根据替换的根目录是否存在于文件系统上 评估替换并猜测它是 URL 还是文件系统路径 这是相关部分文档 https httpd apache org docs 2 4 mod m
  • Apache Web 服务器:AH00125:请求超出了 FallbackResource 的 10 个子请求的限制

    当我在 apache 2 4 Web 服务器配置中使用 FallbackResource 时 它显示错误 AH00125 请求超出了 10 个子请求嵌套级别的限制 请帮助解决这个问题 是指定url http localhost bv hos
  • 非 www .htaccess 重定向 - 忽略其他子域

    我有一个 非 www 的 htaccess 重定向 如下所示 RewriteEngine on RewriteCond HTTP HOST www RewriteRule http www HTTP HOST 1 R 301 L 这是工作
  • Spring MVC http 500错误apache

    上面是我的程序的目录层次结构 我是 Spring 新手 正在学习 MVC 概念 我编写了一个程序 它将输入 名称 输入文本框并打印 Hello name 以下是我的目录结构和我创建的各种文件 web xml
  • 通过 HTTPS 的隧道

    在我的工作场所 流量拦截器 防火墙变得越来越糟糕 我无法通过端口 22 连接到我的家用计算机 并且缺乏 ssh 访问权限让我感到难过 我以前可以通过将 SSH 移动到端口 5050 来使用它 但我认为最近的一些过滤器现在将此流量视为 IM
  • 使用 htaccess 阻止特定文件扩展名?

    我使用此代码将所有请求发送到单个 php 文件 RewriteEngine On RewriteCond REQUEST FILENAME f RewriteCond REQUEST FILENAME d RewriteRule myfil
  • 无法在 Netbeans 9 中设置 apache tomcat

    我正在尝试在 Netbeans IDE 9 中设置 apache tomcat 我已尝试以下步骤 但无法设置 在 工具 gt 服务器 中 我单击 添加服务器 按钮 显示以下消息 因此 我尝试从 工具 gt 插件 安装插件 会显示一个对话框
  • htaccess 仅当 HTTP 引荐来源网址不等于某些内容时才重定向

    我有以下规则将中国用户重定向到该网站的中文版本 RewriteCond HTTP Accept Language zh NC RewriteCond HTTP HOST www example com NC RewriteRule http
  • 如何通过 .htaccess 删除 URL 中任何位置的空参数或参数?

    我的意思是空参数可以在 URL 中的任何位置 每次不同的位置 每次使用不同的名称 每次在不同的 php 页面上 例如 http www example com AnyPHPpageHere php parameter1 7 paramete
  • 如何调试apache虚拟主机配置?

    我的 apache 虚拟主机配置再次出现问题 使用默认配置而不是我的特定配置 问题不在于配置错误 而在于如何解决它 有人有好的建议可以快速解决此类问题吗 更多信息 默认的conf文件是这样的 NameVirtualHost
  • 如何配置 mod_proxy 以阻止除一个网站之外的所有网站

    我正在尝试设置 mod 代理来阻止除特定域之外的所有流量 我可以将其配置为使用 ProxyBlock 指令阻止各个域 并且可以使用 ProxyBlock 阻止所有内容 有没有一种方法可以阻止除一个域之外的所有域 Thanks Andrew
  • FPM 与 apache2 无法工作(权限被拒绝)

    我正在尝试使用 apache fastcgi 和 fpm 设置一个 Debian Web 服务器 但我越来越恼火 一旦我停用 mod php 我就会收到以下错误 2014 年 5 月 22 日星期四 12 16 10 错误 客户端 xxx
  • mod_rewrite代理超时

    我有 apache 设置来代理对后端应用程序服务器的请求 有多个后端服务器 并且有一个大的 rewrite rules 文件 针对每个请求进行处理 以正确地将所有请求代理到应用程序服务器 一台特定的应用程序服务器有时需要很长时间才能响应 如
  • mod_rewrite 如果参数等于某些内容则拒绝访问

    我有类似的网址mydomain com act somethingbadmydomain com act 更糟糕的事情 andmydomain com act somethinggoodmydomain com act somethingb
  • 在 Apache 上设置虚拟主机(XAMPP、Windows 10)

    我尝试使用 XAMPP 为某些本地站点设置虚拟主机 我执行了后续步骤 在 C xampp apache conf extra httpd vhosts conf 中我添加了
  • 升级到 Yosemite 后 Apache 配置损坏

    昨天我升级到 Yosemite 现在我的 Web 开发本地配置不再起作用 我设法在下面设置了一个 userdir Users user public html我可以通过以下方式访问所有网站localhost user websitename
  • 包含哈希标记的目标的 Apache 重写规则

    我正在尝试发出重定向 其中目标包含片段标识符部分 我尝试过这个规则 RewriteRule foo bar cgi script foobar 1 2 R L 但是 那 被转换成 23并且 Web 应用程序无法正确解析此 url 我怎样才能
  • 在 XSSF 工作簿上设置密码保护

    我想为使用 poi 3 14 创建的 xlsx 文件添加密码保护 该文档声称 这是可能的 http poi apache org cryption html http poi apache org encryption html 使用我尝试

随机推荐

  • Google 数据流,DATA_LOSS 异常

    我从谷歌数据流中得到了低于 DATA LOSS 的异常 我有 10 15 个 Json 文件 每个文件大小约为 2 3 MB 我正在使用 jackson2 解析文件 使用 ParDo 进行一些转换 最后进行 group by 来删除重复的项
  • 获取缩放后图像的宽度和高度

    我正在使用CSS缩放图像 如何在缩放后获得其高度和宽度 而不是原始宽度和高度 而是缩放后的宽度和高度 我想使用 jquery 来做到这一点 以便更好地理解这是jsfiddle http jsfiddle net axtruo Ma5D2 b
  • @reboot 在 CRON 中不起作用

    我正在尝试在 Ubuntu 服务器启动时运行 shell 脚本和命令 这是我的CRON reboot home steam check sh reboot screen d S up m node var www html Up1 serv
  • AngularJS + Bootstrap 记住活动选项卡

    我开发了一个使用 Bootstrap 指令的简单 AngularJS 应用程序 我的几个页面使用选项卡 问题是 当我在选项卡 第一个选项卡除外 中并按下导致另一个视图的链接并从该视图返回 浏览器或应用程序中的后退按钮 时 之前的活动选项卡不
  • 自定义perl安装找不到Git.pm

    我已经在我的主目录中安装了自己的 Perl 副本 但我有一些 Perl 脚本需要 Git pm 它是 Git 发行版的一部分 无法从 CPAN 安装 系统perl使用的Git pm位于 usr share perl5 Git pm 如何使此
  • VHDL - 分配默认值

    我有以下架构 architecture datapath of DE2 TOP is begin U1 entity work lab1 port map error on this line clock gt clock 50 key g
  • 如何从 Java 在 Android 设备上运行 adb screenrecord 并结束屏幕录制?

    我怎样才能跑adb shell screenrecord on a Android设备来自Java并结束screenrecording 目前我必须指定 time limit结束录音 如果我尝试在视频结束之前捕获视频 则会失败 有没有办法告诉
  • 使用 .net MVC RadioButtonFor() 时,如何分组以便只能进行一项选择?

    这让我难住了 我有一个强类型视图 它有这个循环来生成单选按钮 它渲染得很好 但由于名称不同 您可以选择超过 1 个单选按钮 如何对它们进行分组以便只能选择 1 个单选按钮 任何帮助 将不胜感激 Html RadioButtonFor 的第一
  • 模型属性级别的 ASP.NET Core 3.1 Web Api 授权

    我有一个带有基本 jwt 身份验证和基于角色的授权的 Web api 现在我想限制某些字段被角色 user 中的用户编辑 因为基于路由的授权是不够的 class Account public int Id get set public st
  • JQuery 不能在 Firefox 中运行,但可以在 Chrome 中运行

    我在使用 jQuery 和 Mozilla Firefox 时遇到问题 Chrome 中一切正常 但 Firefox 却看不到 jQuery 这就是我调用 jQuery 的方式
  • 使用 RavenDB 和 LINQ 查找至少包含子集中所有元素的对象

    我有简单类型Question public class Question public Question string id Id id Tags new List
  • 如何在 D3 中使用 XHR 加载数据

    我正在我的本地主机上试验 D3 我想从互联网上的外部源加载要可视化的数据 我正在寻找如何在 D3 中使用 XHR 加载数据的说明 示例 这里有文档 但这对我来说还不够 我正在寻找代码片段https github com mbostock d
  • 使用 python 请求的网站访问不计入谷歌分析

    使用 python 请求的网站访问不计入谷歌实时分析 我正在使用 python requests 模块 谷歌计算访问次数 但在谷歌分析实时中未找到 活跃用户 我的代码如下 import requests import time agent
  • 我想在我的电脑上安装 nuxt js 但每次都会显示错误

    我想在我的电脑上安装 nuxt js 但每次都会显示错误 npm init nuxt app 项目名称 create nuxt app 不被识别为内部或外部命令 可运行的程序或批处理文件 npm 错误 代码1 npm 错误 路径 C Use
  • 仅在设计时更新默认值

    我想仅在设计时更新链接到公共属性的私有变量的默认值 如果可能的话 TMyComp class TComponent private FColumnWidth Integer FColumnWidthDef Integer protected
  • .NET 中带有 Unity IOC 容器的 RabbitMQ

    我使用 Unity App Block 作为 WCF 项目服务层的 IOC 容器 使用 Unity WCF 库将其插入到每个 WCF 服务中 效果非常好 我最近将 RabbitMQ 引入了我的服务层 目前我正在使用 using 块来连接并添
  • 如何使用 SVN 使某些开发人员只显示某些文件夹

    我有一个包含一堆文件夹的存储库 我希望某些开发人员在检出存储库时只能获取其中两个或三个文件夹 如何使文件夹默认不显示 然后仅在我想要授予访问权限时添加它们 我使用 VisualSVN 作为 SVN 服务器 我所做的就是授予对顶层的读取访问权
  • 使用 RPostgreSQL 进行 UTF-8 / Unicode 文本编码

    我在直接链接到 PostgreSQL 数据库的 Windows 计算机上运行 R 我没有使用 RODBC 我的数据库采用 UTF 8 编码 由以下 R 命令确认 dbGetQuery con SHOW CLIENT ENCODING cli
  • 如何获取嵌入Flash影片的URL?

    今天我试图获取我的 Flash 电影所在的 URL I found 这里有一个类似的问题 https stackoverflow com questions 396412 how can my flash app determine its
  • Apache 在 URL 中隐藏查询字符串但保持 URL 正常工作

    我有两种类型的 URL 但它们可以在查询字符串之后包含任何内容 因为我们有 1000 个 URL 帖子 两者都有 id 我希望隐藏 删除它 但页面仍然加载 这些页面是 WordPress 中的自定义 slugs 我没有在 Apache 2