【问题标题】:How can I "mask" the url using .htaccess in Apache如何在 Apache 中使用 .htaccess “屏蔽” url
【发布时间】:2013-01-28 18:46:16
【问题描述】:

我已经玩了一段时间了,但我仍然不确定这是否可能。

我希望一个 url 指向我的网络服务器上的不同位置,但不更改地址栏中的 url。

例如:

tp.test.com 将访问 test.com/tp/hi

及后续网址:

tp.test.com/foo 将指向 test.com/tp/hi/foo

我一直在尝试使用 RewriteCond 和 RewriteRule 来实现这一点,并尝试使用 RewriteRule 的标志,但根本没有任何成功。

编辑: 这是我尝试过的......

RewriteRule ^tp.test.com/blog/$ http://tp.test.com/tp/hi/$1 [r=301,L]

【问题讨论】:

  • 请发布您已经使用RewriteCondRewriteRule 尝试过的内容。

标签: apache .htaccess


【解决方案1】:

尝试将此添加到文档根目录中的 htaccess 文件中:

RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/tp/hi%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/tp/hi%{REQUEST_URI} -d [OR]
RewriteCond %{DOCUMENT_ROOT}/tp/hi%{REQUEST_URI} -l
RewriteRule ^(.*)$ /tp/hi/$1 [L]

编辑:

由于您必须明确说明您在 URI 中实际想要什么,因此上述方法行不通。

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/blog/(.*)$
RewriteCond %{DOCUMENT_ROOT}/tp/hi/%1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/tp/hi/%1 -d [OR]
RewriteCond %{DOCUMENT_ROOT}/tp/hi/%1 -l
RewriteRule ^blog/(.*)$ /tp/hi/$1 [L]

【讨论】:

  • 如果我也想屏蔽 tp.test.com/blog/ 怎么办?这很近吗?重写规则 ^tp.test.com/blog/(.*)$ /tp/hi/$1 [L]
  • @890123 不,如果tp.test.com 是主机名,它将永远不会在发送到重写引擎的字符串中使用。您无法匹配重写规则中的主机名。
  • 这是有道理的。解决方案是将其添加到重写之上吗? RewriteCond %{HTTP_HOST} ^tp\.test\.com 我的 redirectRule 将如何更改以处理 /blog/ 子目录?
  • @890123 RewriteRule ^blog/(.*)$ /tp/hi/$1 [L],只是没有主机名和前导斜杠。
  • @890123 不,仅更改该行而不更改其余条件是行不通的。您突然说 /blog/ 需要在 URI 中,这是在问一个完全不同的问题,因此,我对您最初问题的回答是行不通的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 2014-03-09
相关资源
最近更新 更多