.htaccess语言通过一些更改进行重定向

我知道是duplicate,但我被困在这里,我也尝试过此链接URL rewriting with 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
mdlyou 回答:.htaccess语言通过一些更改进行重定向

建议的解决方案

更好的方法可能是在根文件夹中处理所有请求的单个脚本。这个想法可以用示例更好地描述:

  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]
本文链接:https://www.f2er.com/3142672.html

大家都在问