我试图将动态网址(下面)重写为略有不同的结构;要么不起作用,要么我不确定它是否正确:
*基本上改变了名称,“搜索”字符串不再重要
在第二步中,在所有搜索引擎显示新网址后,我们完成了非sef网址更容易的所有测试,我们希望将网址#11重写为网址#2
我对apache编程不是很熟悉,即使我的解决方案有效,我们也不确定它是否是正确的,或者它是否会产生某些URL的错误。对于SEF网址,在创建执行第1步重定向的.htaccess文件和稍后要使用的单独.htaccess文件时,将非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
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
您可以在根目录中的一个.htacces文件中尝试:
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]。
答案 1 :(得分:0)
假设您的变量只包含小写字母和数字,请尝试:
RewriteRule ^/([a-z0-9]+)/([a-z0-9]+)/([a-z0-9]+)/([a-z0-9]+)$
/index.php?lang=$1&country=$2&place=$3&street=$4
RewriteCond %{QUERY_STRING}
^lang=([a-z0-9]+)&zone=([a-z0-9]+)&city=([a-z0-9]+)&str=([a-z0-9]+)&search=[a-z0-9]+$
RewriteRule ^index.php$
/index.php?lang=%1&country=%2&place=%3&street=%4 [R=permanent]
(请注意,必须有没有换行符,但我在这里插入了缩进,只是为了让这个网页上的块可读。)
答案 2 :(得分:0)
以下是faa:
的代码(第一步)Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} lang=([^&]+)&zone=([^&]+)&city=([^&]+)&str=([^&]+)&search= [NC]
RewriteRule .* /index.php?lang=%1&country=%2&place=%3&street=%4 [L,NC]