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

时间:2014-12-27 17:36:45

标签: php angularjs .htaccess

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

例如:

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

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

1 个答案:

答案 0 :(得分:4)

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

RewriteEngine On

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

另请注意,在#之后,网络服务器不会成为部分网址,因为只能在客户端解析。

  • RewriteCond %{REQUEST_FILENAME} !-f会针对所有文件跳过此规则。
  • 使用!取消RewriteRule模式
  • 中的完整匹配
  • ((admin|login)(/.*)?)?匹配/admin//login/ OR emptry(着陆页)
  • 的所有内容
  • 如果否定为真,则此规则会将其重定向到/#%{REQUEST_URI},其中%{REQUEST_URI}代表原始URI。

参考文献: