我面临将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-z
或A-Z
] 我也尝试过使用.htaccess
中的以下代码,但不为我工作。
RewriteRule ^product-category/([a-zA-Z0-9-/+]+)/?id=(.*)$&%{QUERY_STRING} product-category/([a-zA-Z0-9-/+]+)/{lc:$2$} [L]
答案 0 :(得分:2)
在您的RewriteMap
部分中定义此VirtualHost
,然后重新启动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
中的值转换为小写。