微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有条件地重写url并使所有内容变为小写

如何解决有条件地重写url并使所有内容变为小写

所以,我的网址是这样的:https://foobar.com/blog?category=Foo+Bar,其中实际的get参数值中可能有也可能没有plus(+)字符。

在所有情况下,我首先要使参数值小写,然后,如果参数值包含加号character(+),请将其替换为连字符。

最后,我试图将https://foobar.com/blog?category=Foo+Bar重写为https://foobar.com/category/foo-bar

这是我到目前为止得到的:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} ^/blog
RewriteCond %{QUERY_STRING} category=([^/]+)+([^/]+)$
RewriteRule (.*) /category/%1-%2? [R=301,L]

现在,这有点接近了,但是实际上将https://foobar.com/blog?category=Foo+Bar重写为https://foobar.com/category/Foo+Ba-r

任何帮助将不胜感激。

解决方法

请在您的htaccess文件的最后或RewriteMap lc int:tolower部分中添加<VirtualHost>。您能再试一下吗?

RewriteEngine On
RewriteCond https on
RewriteCond %{REQUEST_URI} ^/blog$ [NC]
RewriteCond %{QUERY_STRING} ^([^=]*)=([^+]*)\+(.*)$ 
RewriteRule ^(.*)$ /%1/${lc:%2}-${lc:%3}   [QSD,R=301,L]

使用curl命令进行测试(使用http,但上面的规则处理https部分):

curl -IL "http://localhost:80/blog?category=Foo+Bar"
HTTP/1.1 301 Moved Permanently
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1g PHP/7.4.11
Location: http://localhost/category/foo-bar

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。