好的,我需要强制将domain.com/article-detail/?slug=this-is-my-article
重定向到domain.com/article-detail/this-is-my-article
(只需删除?slug=
)
在此网站搜索后,我尝试
RewriteRule ^article-detail/?slug=(.*)$ article-detail/$1 [NC,R=301,L]
或
RedirectMatch 301 ^/article-detail/?slug=(.+)$ /article-detail/$1/
但没有工作
仅供参考:目前,要查看this-is-my-article
,用户可以访问domain.com/article-detail/?slug=this-is-my-article
& domain.com/article-detail/this-is-my-article
答案 0 :(得分:0)
您应该使用RewriteCond
和RewriteRule
指令。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/article-detail/?$
RewriteCond %{QUERY_STRING} ^slug=([a-z-]+)
RewriteRule ^article-detail /article-detail/%1/ [R=301,L]
第3行:如果请求URI为/article-detail
或/article-detail/
第4行:如果查询字符串以slug=
开头,后跟lower case letters with dash
第5行:将模式article-detail
重写为/article-detail/%1
,%1
为RewriteCond
反向引用,匹配括号内的字符串,并永久重定向。