我正在尝试将对我的默认语言 (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] 我会得到:无权访问此服务器上的“\”。
什么是实现我想要的正确方法?
在 RewriteRule 之后不应该有 an
[R]
,因为这告诉 Apache 发送 302 重定向而不是在内部重写 URL。RewriteRule 的第二部分应该以斜杠开头,除非这是在目录上下文中(例如在
.htaccess
文件或<Directory >
块中)。如果没有斜杠,您将 URL 重写为类似http://example.comnl/index.php
而不是http://example.com/nl/index.php
.