我有这个动态链接:
http://www.nortedigital.mx/article.php?id=36175&t=dobla_las_manos_el_snte__avala_reforma_educativa
我需要像这样进行 URL 友好转换:
http://www.nortedigital.mx/36174/se_enriquecio_elba_en_sexenios_del_pan.html
我有这个重写规则:
RewriteRule ^([^/]*)/([^/]*)\.html$ /article.php?id=$1&t=$2 [L]
但不起作用。请问有人可以帮助我吗?
您必须在 RewriteCond 中捕获查询字符串并在 RewriteRule 中使用它
RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=(\d+)&t=(.+)$
RewriteRule ^/?article\.php$ /%1/%2.html? [R,L]
这会将客户端重定向到请求,即/36174/se_enriquecio_elba_en_sexenios_del_pan.html
。现在您必须提供真实的页面。为此,我们添加了一条附加规则,类似于您问题中已有的规则
RewriteRule ^/?(.+?)/(.+?)\.html$ /article.php?id=$1&t=$2 [L]
但现在,存在无限的重定向循环。我们通过使用环境变量来打破这个问题。这是完整的规则集
RewriteEngine On
RewriteCond %{ENV:REDIRECT_SEO} ^$
RewriteCond %{QUERY_STRING} ^id=(\d+)&t=(.+)$
RewriteRule ^/?article\.php$ /%1/%2.html? [R,L]
RewriteRule ^/?(.+?)/(.+?)\.html$ /article.php?id=$1&t=$2 [L,E=SEO:1]
只要未设置环境变量,此规则就会按照上面的方式进行重定向。它提供真实的页面article.php
同时设置环境变量,防止循环。
您也可以使用 cookie 来实现此目的。但如果客户端禁用 cookie,这种情况就会被破坏。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)