[英]Htaccess redirect query string + force redirect
这是我得到带有2个OPTIONAL参数的字符串的交易
/index.php?lang=en&p=about
可能是两种方式
/index.php?p=about&lang=bg
并且p
参数是可选的,它可以不带p
或lang
一个
到目前为止,我已经能够将其中之一从(1) /index.php?p=about
到(2) /about
它不执行的操作,而我只能用另一种方法强制它重定向(1)至(2) 。 当您键入(1)将您重定向到(2)时 。 我用[R] ..做的相反。
我对htaccess模式和东西真的很秃头,所以更棘手的问题是关于第二查询lang
因为您假设它是关于更改语言的,所以我必须做到
从/index.php?lang=en&p=about
到/en/about
,还有/index.php?p=about&lang=en
导致/en/about
,当您将整个查询键入到时,这些重定向将被强制执行重定向到seo友好版本。
另外,当您没有lang
也应该使用默认的en
我现在正在测试各种示例重定向,但是到目前为止,没有任何事情可以正常工作。
您可以使用以下规则以任何顺序支持查询参数:
RewriteEngine On
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} (?:^|&)lang=([^&]*)
RewriteCond %1::%{QUERY_STRING} (.*?)::(?:|.*&)p=([^&]*)
RewriteRule ^(index\.php)?$ /%1/%2? [L,NC,R=302]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]+)/(\w+)/?$ index.php?lang=$1&p=$2 [L,QSA]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.