.htaccess:重定向而不更改 url
Posted
技术标签:
【中文标题】.htaccess:重定向而不更改 url【英文标题】:.htaccess: Redirect without changing url 【发布时间】:2013-01-31 12:05:06 【问题描述】:我希望将 URL 重定向到同一域上的不同页面,但浏览器不更改 URL。所以页面www.mydomain.co.uk/tour/
应该指向www.mydomain.co.uk/
但不会改变。
我在 *** 上查看了很多类似的问题,但所有解决方案似乎都为我更改了 URL。
代码:
RewriteEngine On
Options +FollowSymLinks
RewriteCond %REQUEST_URI ^/tour
RewriteRule ^(.*)$ http://www.mydomain.co.uk/ [L]
【问题讨论】:
尝试删除域。也尝试使用[P]
在下面的答案中添加 [P] 真是太棒了
【参考方案1】:
1- 使用 [P] 而不是 [L]
2- 在第二行末尾使用 $s 来重定向一组 url,并在其末尾也删除 /。
代码将如下所示:
RewriteCond %REQUEST_URI ^/tour
RewriteRule ^(.*)$ /$1 [P]
它处理的不仅仅是文件夹浏览的索引页。
【讨论】:
这和Michal M's answer一模一样... 请重新检查,$1 标志在那里! 啊,我的错。我没有注意到变化。为确保没有其他人犯同样的错误,我建议您编辑您的答案以提及 Michal 的现有答案,以及为什么您的答案不同【参考方案2】:尝试将 [L] 更改为 [P],我认为它会起作用。
【讨论】:
这不是他刚刚提出的问题已经接受的答案吗?【参考方案3】:因为您在重写规则中提供了完整的 URL,所以它会自动被视为重定向。用斜杠替换完整的 URL,它应该可以工作,即:
RewriteCond %REQUEST_URI ^/tour
RewriteRule ^(.*)$ / [P]
您甚至可以将其缩短为:
RewriteEngine on
RewriteRule ^/?tour.* / [P]
【讨论】:
您应该告知启用 mod_proxy 的风险,就像 Apache 在此处所做的那样 httpd.apache.org/docs/current/mod/mod_proxy.html 谢谢!这也是困扰我的地方。有道理。 当我尝试将/fake-url
重写为/new.php
之类的真实文件时,它可以工作,但是当我尝试将/fake-url
重写为/another-fake
而真实为index.php
时,它会更改url .以上是关于.htaccess:重定向而不更改 url的主要内容,如果未能解决你的问题,请参考以下文章
使用 htaccess 重定向子域而不更改地址栏中的 URL
使用 .htaccess 重定向 URL 而不使用尾随帖子 ID
使用 htaccess 重定向页面,但保留 URL 结构并仅更改域