我最近在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
这怎么可能适用于我的情况?我真的希望有一个小小的网址,但似乎我错过了一些东西。
答案 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没有其他方法。