php - Apache 在使用 mod_rewrite 时提供缓存内容
问题描述
附加信息:网络服务器在免费共享主机上运行,它也使用 cloudflare。
我想像这样使用查询字符串:
https://websitename/share/result/参数
而不是这个:
https://websitename/share.php?result=parameter
其中参数是查询字符串值。
我设法通过修改如下所示的 .htaccess 文件来做到这一点:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC]
RewriteRule ^([^/]+)/([^/]+)$ share.php?result=$1
</IfModule>
当我更新share.php文件的内容时,如果我通过导航到以下位置访问它,它会提供新内容:
https://网站名称/共享
但是当我尝试通过以下方式访问它时:
https://websitename/share/或https://websitename/share/parameter
它只是提供share.php文件的缓存版本。我能做些什么来解决这个问题?
到目前为止我尝试过的事情:
- 清除 cloudflare 上的缓存
- 将缓存级别设置为:无查询字符串
- 删除浏览器缓存
- 试图在不同的浏览器中打开网站
解决方案
我设法解决了这个问题。
解决方案是从此更改 htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC]
RewriteRule ^([^/]+)/([^/]+)$ share.php?result=$1
</IfModule>
对此:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC]
RewriteRule ^share/([^/]*)/([^/]*)$ /share?result=$1 [L]
</IfModule>
推荐阅读
- regex - 如何在 XML 摘要之间捕获文本?
- ios - 单击时从循环中禁用按钮
- webrtc - webRTC - 禁用发送到远程对等体但不是本地媒体的媒体
- node.js - 从传入的电子邮件 html 中分离出修剪的内容和原始消息
- javascript - 如何更改附加元素的内部 html?
- html - 如何从 2 个可调整大小的输入元素中删除间隙?
- javascript - JS多输入字段合二为一CF7
- python - 如何将多个字典的内容保存到一个字典中,然后将其保存在for循环中的列表中
- c - 在 fgets() 循环中实现 SIGINT 处理程序
- c++ - c++ 是 unordered_map
一个线程写入和第二个线程读取的线程安全,没有新元素插入?