【问题标题】:.htaccess 301 redirection old url to new url with querystring issue.htaccess 301 将旧网址重定向到带有查询字符串问题的新网址
【发布时间】:2018-08-03 11:16:14
【问题描述】:

我正面临将以下 URL 重定向到带有查询字符串的新 URL 的问题。

http://www.mywebsite.co.uk/product-category/subcategory/?id=TEST_TS&fromDate=&parts=

http://www.mywebsite.co.uk/product-category/subcategory/test_ts

我还需要将字符串单词查询到lowercase

注意

  • TEST_TS关键字是第一个查询字符串的值,必须小写。
  • 对于product-category关键字是固定的
  • 对于subcategory,关键字是动态的[只有字符字母a-zA-Z]
  • 对于查询字符串,必须删除第二个和第三个参数

我也尝试过.htaccess 中的以下代码,但不适合我。

RewriteRule ^product-category/([a-zA-Z0-9-/+]+)/?id=(.*)$&%{QUERY_STRING}   product-category/([a-zA-Z0-9-/+]+)/{lc:$2$} [L]

【问题讨论】:

  • 只有在您可以控制 Apache 服务器配置时才能进行小写转换
  • @anubhava 是的,我完全控制了服务器,但我不知道如何解决这个问题?因为我为此尝试了很多规则。但没有一个对我有用。

标签: .htaccess redirect url-rewriting


【解决方案1】:

在您的 VirtualHost 部分中定义此 RewriteMap 并重新启动 Apache:

RewriteMap lc int:tolower

然后在站点根目录 .htaccess 中有这个代码:

RewriteEngine On

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} (/product-category/subcategory)/?\?id=([^\s&]+) [NC]
RewriteRule ^ %1/${lc:%2}? [R=301,L,NE]

# internal forward from pretty URL to actual one
RewriteRule ^(product-category/subcategory)/(\w-]+)/?$ $1/?id=$2&fromDate=&parts= [L,QSA,NC]

${lc:%2} 会将%2 中的值转换为小写。

【讨论】:

  • 感谢您的帮助。上面的解决方案工作正常,修改很少。只需找到将uppercase 转换为lowercase 的解决方案。我在 vhost 文件中添加了RewriteMap,但我认为它不起作用。无论如何,感谢您的巨大帮助。你让我开心。再次感谢:)
  • 检查我更新的大小写转换。 (我之前的回答错过了)
  • 再次感谢。我会用它来试一试。
猜你喜欢
  • 1970-01-01
  • 2013-10-16
  • 2016-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
相关资源
最近更新 更多