我尝试将动态 URL(如下)重写为稍微不同的结构;要么不起作用,要么我不确定它是否正确:
- 旧网址 (URL#1):index.php?lang=AAA&zone=BBB&city=CCC&str=DDD&search=EEE
- 新网址 (URL#11):index.php?lang=AAA&country=BBB&place=CCC&street=DDD
*基本上更改了名称,“搜索”字符串不再重要
- 我想要实现的是将所有访问者从(旧)动态 URL#1 重定向到(新)动态 URL#11
第二步,在所有搜索引擎显示新网址并且我们完成了所有使用非 sef 网址更容易的测试后,我们希望将 URL#11 重写为 URL#2
- 新网址 (URL#11):index.php?lang=AAA&country=BBB&place=CCC&street=DDD
- Sef URL (URL#2): /AAA/BBB/CCC/DDD
我对 apache 编程不是很熟悉,即使我的解决方案有效,我们也不确定它是否正确,或者它是否会在某些 URL 上生成错误。在创建执行步骤 1 重定向的 .htaccess 文件以及稍后用于 SEF url 的单独 .htaccess 文件时,我们将不胜感激。谢谢你!
http://example.com/index.php?lang=AAA&zone=BBB&city=CCC&str=DDD&search=EEE
重定向至:
http://example.com/AAA/BBB/CCC/DDD
默默地映射到:
http://example.com/index.php?lang=AAA&country=BBB&place=CCC&street=DDD
您可以在根目录中的一个 .htaccess 文件中尝试此操作:
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} lang=([^&]+)&zone=([^&]+)&city=([^&]+)&str=([^&]+)&search= [NC]
RewriteRule .* /%1/%2/%3/%4? [R=301,L,NC]
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)/([^/]+)/? [NC]
RewriteCond %{REQUEST_URI} !index\.php [NC]
RewriteRule .* /index.php?lang=%1&country=%2&place=%3&street=%4 [L,NC]
如果查询包含以下格式的参数:%nn
,尝试添加B标记这两个规则。示例:[L,NC,B]。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)