首页 > 解决方案 > 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文件的缓存版本。我能做些什么来解决这个问题?

到目前为止我尝试过的事情:

标签: phpapache.htaccesscachingmod-rewrite

解决方案


我设法解决了这个问题。

解决方案是从此更改 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>

推荐阅读