如何使用模式和查询字符串重定向URL?

时间:2019-08-06 21:34:39

标签: .htaccess redirect

我正在尝试为一系列子目录解析一些外部旧版链接,并重定向到另一个目录,包括原始查询字符串。

作为示例,我具有以下旧结构:

/software/update/{1990..2019}/index.php

*请注意每个index.php完全相同

我们控制外部链接,但由于传统原因不能更改它们。

例如,链接可能是:/software/update/2019/?x=0A123S

我的目标是重定向以下任何请求:

/software/upgrade/YYYY/?x=0A123S/help-center/download-update/?x=0A123S

此外,由于WordPress网站上添加了一个/software/的标签,

RewriteCond %{REQUEST_FILENAME} /software/?$

...就在WordPress规则/条件之前。

在过去的两个小时中,我在SOgoogled上浏览了数十篇文章,测试了想法,甚至联系了几个同事。

我尝试了以下代码的几种变体,但显然.htaccess/regex空格中缺少。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

...
# Tested many variations of this
RewriteCond %{REQUEST_URI} /software/upgrade/([0-9]{4})/$ [NC AND]
RewriteCond %{QUERY_STRING} x=([0-9]{1})+([A-Z]{1})+([0-9]{3}) [NC]
RewriteRule /help-center/upgrade/?x=%2 [L, R=301]
# End of testing

RewriteCond %{REQUEST_FILENAME} /software/?$

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule>

唯一的错误是Internal Server Error

0 个答案:

没有答案