第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/login
或example.com/fr/login
,似乎页面的一部分加载了两次。
这里可能没有必要的详细信息,但是例如它说Facebook Pixel Error: Duplicate Pixel ID:
,以及我使用的其他标签的类似错误,如Mixpanel,然后我的JS就停止了工作。关于我在我身边看到的问题,我可以说的全部。最好的机会似乎是在寻找htaccess规则中的公然错误。
规则中应该修复什么,以便让GET参数page
和lang
正常工作的最终目标?
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
答案 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]