【问题标题】:How to redirect a root sub-folder to a sub-domain using htaccess rules如何使用 htaccess 规则将根子文件夹重定向到子域
【发布时间】:2020-12-04 00:51:25
【问题描述】:

我正在尝试将子文件夹的所有链接重定向到新的子域,例如:

example.com/sso/ 重定向到sso.example.com

example.com/sso/login 重定向到sso.example.com/login

我尝试了以下方法,但它不起作用:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^/sso/(.*) http://sso.example.com/$1 [R=301]
</IfModule>

【问题讨论】:

  • 尝试删除 ^/sso/(.*) 中的前导斜杠

标签: apache .htaccess redirect mod-rewrite url-rewriting


【解决方案1】:

您能否尝试按照您显示的示例编写以下内容。将这些规则放入您的 htaccess 文件后,请清除浏览器缓存。为您的尝试添加了更多选项,例如匹配 sso 忽略大小写模式。添加L 标志以在此之后停止规则的处理,以免与其他规则冲突。

还应将example.com 中的. 转义以使其被视为文字字符。

Options +FollowSymLinks
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(sso|SSO)/(.*)$ http://sso.example.com/$2 [R=301,NE,L]

【讨论】:

  • 条件 %{REQUEST_URI} ^/sso 是不必要的,因为 RewriteRule 执行相同的检查
  • @Thakkie,我现在已经删除了条件并放置了一个正则表达式来匹配规则本身中 sso 的小写或大写。
  • @RavinderSingh13 感谢您的帮助。这只是一个小问题,因为它重定向到sso.example.com/sso,但因为它掩盖了旧的URL。我试图让它仅反映 sso/ 之后的子目录,例如尝试将 example.com/ssosso.example.comexample.com/sso/loginsso.example.com/login
  • @Joboy2212,很抱歉发生了错字,您能否将这些规则放在您的 htaccess 中,清除浏览器缓存并重试?让我知道情况如何?
猜你喜欢
  • 2012-01-09
  • 2012-11-23
  • 2013-12-03
  • 2017-03-05
  • 2013-11-08
  • 1970-01-01
  • 2014-03-17
  • 2012-01-18
  • 1970-01-01
相关资源
最近更新 更多