Язык .htaccess перенаправляет с некоторыми изменениями - PullRequest
0 голосов
/ 07 ноября 2019

Это duplicate Я знаю, но я застрял здесь, я также попробовал эту ссылку Перезапись URL с помощью PHP , но мне нужно спросить кого-то, я новичок и [на самом деле не смог получить его] и я не мог искать больше из-за чего-то. проблема в том, что я получаю ОШИБКУ 404 ... так кто-нибудь поможет?

# BEGIN

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /Folder/
    RewriteRule ^index\.php$ - [L]

    RewriteCond %{HTTP:Accept-Language} ^en [NC]
    RewriteRule ^$ Folder/en/ [L,R=301]

    RewriteCond %{HTTP:Accept-Language} ^de [NC]
    RewriteRule ^$ Folder/de/ [L,R=301]

    RewriteCond %{HTTP:Accept-Language} ^fa [NC]
    RewriteRule ^$ Folder/nl/ [L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l

    RewriteRule ^(en|de|fa)/?$ index.php?lang=$1 [QSA,NC,L]
</IfModule>

# END

1 Ответ

1 голос
/ 08 ноября 2019

Предлагаемое решение

Лучшим подходом может быть отдельный скрипт в корневой папке, который обрабатывает все запросы. Эту идею лучше описать на примерах:

  1. www.domain.com/ всегда отображается в адресной строке браузера, но внутренне переходит к www.domain.com/lang_handler.php?lang=sv или
  2. www.domain.com/page1/, всегда показываяв адресной строке браузера, но внутри: www.domain.com/lang_handler.php?lang=sv&target_page1=page1

Это может быть достигнуто в .htaccess with mod_rewrite directives. Вот пример:

RewriteEngine On
RewriteBase  /

# Set managed languages here, except default (en)
RewriteCond %{HTTP:Accept-Language} ^(sv|ne|no).*$ [NC]

# Replace the names of the script and the parameters in the next 2 lines
RewriteCond %{REQUEST_URI} !lang_handler\.php              [NC]
RewriteRule ^([^/]+)?/?$  lang_handler.php?lang=%1&target_page1=$1  [L,QSA]

# If no match, set English
# Replace the names of the script and the parameters in the next 2 lines
RewriteCond %{REQUEST_URI}  !lang_handler\.php             [NC]
RewriteRule ^([^/]+)?/?$  lang_handler.php?lang=en&target_page1=$1  [L,QSA]
...