繁体   English   中英

重写规则以重定向到SEO友好URL

[英]rewrite rule to redirect to SEO friendly URL

我正在为使用下面的重写代码查询字符串的页面创建一个SEO友好的URL

RewriteRule certificates/finance curr/certificate.php?id=26 [L,QSA]

但现在我想从非友好的URL重定向,即curr / certificate.php?id = 26到友好的一个,即证书/财务,如果有人来到非友好的URL

我尝试添加以下代码

RewriteCond %{QUERY_STRING} id=26
RewriteRule dir1/xyz.php /certificates/finance? [R=301,L]

但后来我得到了太多重定向错误。 有没有办法创建一个SEO友好的网址,并让用户访问该URL,如果他们来到非SEO友好的URL。

谢谢你的帮助。

您需要匹配%{THE_REQUEST}变量而不是%{QUERY_STRING} 由于您首先重定向然后重写相同的请求,因此内部RewriteRule与带有R标志的Rule冲突并导致无限循环错误。

RewriteCond %{THE_REQUEST} /curr/certificate.php\?id=26\s [NC]
RewriteRule ^ /certificate/finance? [L,R]
RewriteRule certificates/finance curr/certificate.php?id=26 [L,QSA]

如果您的apache版本是2.4,您还可以在RewriteRule中使用END标志立即终止重写处理。 这将避免重定向和重写相同请求时的无限循环错误。

RewriteCond %{QUERY_STRING} ^id=26$ [NC]
RewriteRule ^curr/certificate.php$ /certificate/finance? [L,R]
RewriteRule certificates/finance curr/certificate.php?id=26 [QSA,END]

在测试这些新重定向之前清除浏览器缓存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM