查找不包含特定字符串的 uri 时重定向循环
Redirect loop while looking for uri that does NOT contain specific string
我有一个网站可以说 https://example.com/ and I would like to redirect every url that doesn't begins with /something
to https://example.com/something/
我正在使用 Apache 2.4.29(托管),我的 .htaccess 看起来像这样。
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/something(.*)$ [NC]
RewriteRule ^(.*)$ /something/ [R=302,NC,L]
我的问题是当我在主页 (/
) 或任何其他页面时我被重定向到 /something/
这是正确的但是当我在 /something/
我仍然被重定向到 /something/
并循环直到出现 ERR_TOO_MANY_REDIRECTS 错误。
Here 是一个 link 到 htaccess 测试器,它表明这应该有效,并且当我已经在这里时不应该将我重定向到 /something/
但事实并非如此我的主机。
我正在关注 this and 问题,但没有成功。
根据您显示的尝试,请尝试遵循一组规则。如果您已有规则,请将它们放在 htaccess 规则文件的顶部。
请确保在测试您的 URL 之前清除您的浏览器缓存。
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/?$
RewriteCond %{THE_REQUEST} !something [NC]
RewriteRule ^ /something? [R=302,NC,L]
您可以使用 THE_REQUEST
变量尝试此规则:
RewriteEngine On
RewriteCond %{THE_REQUEST} !\s/something [NC]
RewriteRule ^ /something/ [R=302,L]
确保在完全清除浏览器缓存后进行测试。
THE_REQUEST
变量表示 Apache 从您的浏览器收到的原始请求,并且在执行其他重写指令后不会被覆盖。此变量的示例值为 GET /index.php?id=123 HTTP/1.1
我有一个网站可以说 https://example.com/ and I would like to redirect every url that doesn't begins with /something
to https://example.com/something/
我正在使用 Apache 2.4.29(托管),我的 .htaccess 看起来像这样。
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/something(.*)$ [NC]
RewriteRule ^(.*)$ /something/ [R=302,NC,L]
我的问题是当我在主页 (/
) 或任何其他页面时我被重定向到 /something/
这是正确的但是当我在 /something/
我仍然被重定向到 /something/
并循环直到出现 ERR_TOO_MANY_REDIRECTS 错误。
Here 是一个 link 到 htaccess 测试器,它表明这应该有效,并且当我已经在这里时不应该将我重定向到 /something/
但事实并非如此我的主机。
我正在关注 this and
根据您显示的尝试,请尝试遵循一组规则。如果您已有规则,请将它们放在 htaccess 规则文件的顶部。
请确保在测试您的 URL 之前清除您的浏览器缓存。
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/?$
RewriteCond %{THE_REQUEST} !something [NC]
RewriteRule ^ /something? [R=302,NC,L]
您可以使用 THE_REQUEST
变量尝试此规则:
RewriteEngine On
RewriteCond %{THE_REQUEST} !\s/something [NC]
RewriteRule ^ /something/ [R=302,L]
确保在完全清除浏览器缓存后进行测试。
THE_REQUEST
变量表示 Apache 从您的浏览器收到的原始请求,并且在执行其他重写指令后不会被覆盖。此变量的示例值为 GET /index.php?id=123 HTTP/1.1