【问题标题】:.htaccess: Redirect without changing url.htaccess:重定向而不更改 url
【发布时间】:2023-03-03 03:12:02
【问题描述】:

我希望将 URL 重定向到同一域上的不同页面,但浏览器不更改 URL。所以页面www.mydomain.co.uk/tour/ 应该指向www.mydomain.co.uk/ 但不会改变。

我在 Stackoverflow 上查看了很多类似的问题,但所有解决方案似乎都为我更改了 URL。

代码:

RewriteEngine On
Options +FollowSymLinks
RewriteCond %{REQUEST_URI} ^/tour
RewriteRule ^(.*)$ http://www.mydomain.co.uk/ [L] 

【问题讨论】:

  • 尝试删除域。也尝试使用[P]
  • 在下面的答案中添加 [P] 真是太棒了

标签: regex .htaccess


【解决方案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 .
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多