.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

使用 .htaccess 重定向 URL 而不使用尾随帖子 ID

使用 htaccess 重定向页面,但保留 URL 结构并仅更改域

使用 .htaccess 重定向 404 而不重定向尾部斜杠

jquery:更改URL地址而不重定向? [复制]