背景: 我最近在DokuWiki安装中将每个包含特定产品名称的字符串更改为另一个。现在我必须将硬编码链接重定向到新URL。
网址如下:
past: example.com/wiki/doku.php?id=sales:producta:descr:producta
present: example.com/wiki/doku.php?id=sales:productb:descr:productb
问题:
我应该将字符串producta
替换为productb
。该字符串可以在URL中多次出现。因此,无论出现的次数如何,都应予以更换。
我找到了几种替换唯一字符串的方法。但我需要在URL中替换此字符串的每个出现。可以在问号之前进行替换,但我没有找到像这样操纵查询字符串的解决方案。
有没有办法实现这种替代?
答案 0 :(得分:1)
这很棘手,但可以做到。尝试将其添加到您的网络文档根文件夹中的.htaccess
文件中(通常为public_html
或htdocs
):
Options -Multiviews
RewriteEngine On
# If the query string contains producta, capture it to %1
RewriteCond %{QUERY_STRING} ^(.+?producta.*)
# ... and bring it down to the url, temporarily inserting @@
RewriteRule ^(.+) $1@@%1? [DPI]
# Rewrite product a to product b but only if @@ is in the string
RewriteRule ^([^@]+@@.*)producta(.*) $1productb$2 [N]
# Remove @@
RewriteRule ^([^@]+)@@(.*) $1?$2 [L]
这假设mod_rewrite 已为.htaccess
文件激活和。
如果您不确定,要检查是否安装了mod_rewrite,请查看phpinfo();
输出中已安装模块的列表
默认情况下,{_ 1}}文件未启用mod_rewrite。如果您要管理自己的服务器,请打开.htaccess
并确保webroot目录块包含以下行之一:httpd.conf
或AllowOverride FileInfo