【问题标题】:.htaccess language redirects with some changes.htaccess 语言重定向并进行了一些更改
【发布时间】:2020-03-04 08:37:17
【问题描述】:

我知道是duplicate,但我被困在这里,我也尝试了这个链接URL rewriting with PHP,但我需要问别人,我是新手,[实际上无法得到它],我无法搜索更多是因为一些事情。问题是我得到 404 ERROR ...所以有人帮忙吗?

# 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

【问题讨论】:

  • 预期的行为是什么?究竟是什么不起作用?
  • 是的,它不起作用 .htaccess 更新了@digijay

标签: php .htaccess url mod-rewrite url-rewriting


【解决方案1】:

建议的解决方案

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

  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&amp;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]

【讨论】:

  • 我仍然得到 404
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-12
  • 1970-01-01
相关资源
最近更新 更多