2017-02-20 3 views
0

Часть 1 заботится о делает example.com/fr ведут себя как example.com?lang=fr или example.com/fr/some-page.php как example.com/some.page.php?lang=fr и т.д..htaccess держать несколько GET PARAMS

Часть 2, который я в настоящее время работает над не работает хорошо еще, чтобы получить новый GET для других страниц, называемых page, в этом случае, если в URL-адресе есть 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

Вы можете использовать следующее правило в качестве 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] 
+0

Привет, проблема все еще существует, и это создало новую проблему - страниц, таких как 'example.com/fr/some -page.php' не работает. 'example.com/fr' (' example.com/XX') все еще работает. –

+0

Хорошо по какой-то причине правило работает сейчас после повторного тестирования. Он не исправляет начальную проблему, но упрощает файл htaccess, удаляя одну строку. –

+0

@DanP С вопросами по работе вы можете узнать больше. – starkeen

Смежные вопросы