.htaccess保留多个GET参数

时间:2017-02-20 03:01:26

标签: php apache .htaccess

第1部分负责使example.com/fr表现得像example.com?lang=fr,或example.com/fr/some-page.php表现得像example.com/some.page.php?lang=fr等。

我目前正在努力工作的第2部分是为其他名为page的网页获取新的GET参数,在这种情况下,如果有login在网址中。

问题:例如example.com/loginexample.com/fr/login,似乎页面的一部分加载了两次。

这里可能没有必要的详细信息,但是例如它说Facebook Pixel Error: Duplicate Pixel ID:,以及我使用的其他标签的类似错误,如Mixpanel,然后我的JS就停止了工作。关于我在我身边看到的问题,我可以说的全部。最好的机会似乎是在寻找htaccess规则中的公然错误。

规则中应该修复什么,以便让GET参数pagelang正常工作的最终目标?

RewriteEngine On

# Part 1
RewriteCond %{THE_REQUEST} \s/+[^?]*\?lang=([^\s&]+)\s [NC]
RewriteRule ^ /%2/%1? [R=301,L,NE]
RewriteCond %{REQUEST_URI} !^/js/
RewriteRule ^([a-z]{2})(?:/([^/]+))?$ $2?lang=$1 [NC,L,QSA]


# Part 2 (this is the part I am adding, which isn't fully working well yet)
# anything looking flagrantly wrong? If for example we are on `example.com/fr/login`,
# according to rules in this htaccess file we should have 2 GET params, `lang` and `page`.
RewriteCond %{REQUEST_URI} login
RewriteRule .* index.php?page=login

# adding more pages the same way
RewriteCond %{REQUEST_URI} signup
RewriteRule .* index.php?page=signup

1 个答案:

答案 0 :(得分:0)

您可以将以下规则用作Part1

RewriteEngine on
RewriteRule ^(en|fr)/login/?$ /index.php?page=login [L]


RewriteCond %{THE_REQUEST} \?lang=([^&]+)\sHTTP
RewriteRule ^ /%1%{REQUEST_URI}? [L,R]
RewriteRule ^(en|fr)/?(.*\.php)?$ /$2?lang=$1 [L]