Htaccess重定向查询字符串+强制重定向

时间:2014-11-18 13:00:18

标签: php apache .htaccess mod-rewrite redirect

这是我用2个可选参数获得此字符串的交易

/index.php?lang=en&p=about

可能是两种方式

/index.php?p=about&lang=bg

并且p参数是可选的,它可以在没有plang

的情况下运行

到目前为止,我能够将其中一个从(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的{​​{1}}以及当您输入要重定向到seo的整个查询时强制重定向的那些重定向友好版。

此外,如果您没有/en/about,则应该使用默认lang

我现在正在测试各种样本重定向,但到目前为止没有任何工作正常。

1 个答案:

答案 0 :(得分:0)

您可以使用此规则以任何顺序支持查询参数:

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]