重写网址以隐藏真实的网页路径

时间:2012-12-28 13:59:51

标签: .htaccess url-rewriting

我最近在SO的帮助下解决了我的htaccess rewriterule问题:

Reuse subdomain in a rewrite rule

结果是当有人进入时

whatever.example.com/anypage

在地址栏中,htaccess会自动重定向到

whatever.example.com/somepath/whatever/anypage

我希望找到一种方法,只在展示whatever.example.com/anypage内容的地址栏中显示whatever.example.com/somepath/whatever/anypage

在我之前提到的帖子中,Jon Lin清楚地提到了以下内容:

  

重定向始终会更改浏览器的URL地址栏中的内容

但是我知道一些非常频繁的网址重写案例会在地址栏中显示,例如:

example.com/article-1-15

但实际上显示了

的内容
example.com/somepath/somepage.php?article=1&otherparam=15

这怎么可能适用于我的情况?我真的希望有一个小小的网址,但似乎我错过了一些东西。

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI}  ^/([^/]+)$
RewriteRule .*  http://whatever.example.com/somepath/whatever/%1 [L]

它将映射:

http://whatever.example.com/anypage

到以下资源:

http://whatever.example.com/somepath/whatever/anypage

始终显示在浏览器的地址栏中:

http://whatever.example.com/anypage

<强>已更新

如果任何动态且在替换URI中相同,则这是另一个选项:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST}  ([^/]+)\.example\.com.*
RewriteCond %{REQUEST_URI}  ^/([^/]+)$
RewriteRule .*  http://%1.example.com/somepath/%1/%2 [L]

只要替换路径中的“任何”都相同,这将起作用。如果不是,最后的“无论什么”必须硬编码,如下:

RewriteRule .*  http://%1.example.com/somepath/whatever/%2 [L]

传入的URL没有其他方法。