如何解决有条件地重写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 举报,一经查实,本站将立刻删除。