我正在尝试将我的默认语言 (nl) 的所有请求重定向到 /nl.....(不向用户显示重定向)。因此 example.com 应该重定向到 example.com/nl,而不会在浏览器中明显更改 URL。以下是我尝试的方法:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/en.*
RewriteCond %{REQUEST_URI} !^/nl.*
RewriteRule ^(.*)$ nl$1 [R,L]
重定向对用户可见(/nl/index.php),此外还会导致“重定向过多”。
如果我尝试 [P,L],我会得到:没有权限访问此服务器上的“\”。
实现我想要的正确方法是什么?
答案1
RewriteRule 后面不应该有,[R]
因为这会告诉 Apache 发送 302 重定向而不是内部重写 URL。
RewriteRule 的第二部分应以斜线开头,除非是在目录上下文中(例如在文件.htaccess
或<Directory >
块中)。如果没有斜线,则会将 URL 重写为类似 的内容,http://example.comnl/index.php
而不是http://example.com/nl/index.php
。
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/en.*
RewriteCond %{REQUEST_URI} !^/nl.*
RewriteRule ^(.*)$ /nl$1 [L]