如果 url 不包含某些字符串,则 htaccess 重定向

Lev*_*ili 4 php .htaccess angularjs

我想将所有传入请求重定向到另一个网址(如果它不包含 # 和 admin)。我需要它用于 angular.js,但我有 /admin 和 php

例如:

http://example.com/link-to-article -> http://example.com/#/link-to-article

http://example.com/admin/ * 不会重定向

anu*_*ava 5

您可以在您的文件中使用此代码DOCUMENT_ROOT/.htaccess

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^((admin|login)(/.*)?)?$ /#%{REQUEST_URI} [L,NC,NE,R=302]
Run Code Online (Sandbox Code Playgroud)

另请记住,Web 服务器不会解析 URL 部分,#因为该部分仅在客户端解析。

  • RewriteCond %{REQUEST_FILENAME} !-f对所有文件跳过此规则。
  • 使用否定模式!中的整个匹配RewriteRule
  • ((admin|login)(/.*)?)?匹配任何/admin//login/OR 空(登陆页面)
  • 如果否定为真,则此规则将其重定向到表示原始 URI 的/#%{REQUEST_URI}位置%{REQUEST_URI}

参考: