【问题标题】:mod_rewrite not working as expectedmod_rewrite 没有按预期工作
【发布时间】:2011-12-31 02:31:36
【问题描述】:

我有一个关于 mod_rewrite 的问题...... url 重写 sem 工作正常......唯一的问题是地址栏中的 url 与重写之前保持相同

例如:我想将 www.site.com/page.php?page=merchandise 重写为 www.site.com/merchandise。现在,当我写网址时,我会转到正确的页面(www.site.com/page.php?page=merchandise),但地址栏中的地址仍然存在(www.site.com/page.php?page=merchandise)它应该在哪里(www.site.com/merchandise)......它在当地环境中运行良好......但在实际环境中出现问题...... 我目前正在使用简单的 RewriteRule。

重写规则如下:

RewriteRule ^merchandise$ http://www.mysite.com/page.php?page=merchandise [NC]

它非常简单,应该可以工作。但它不会隐藏地址栏中的实际地址。那是我的问题。否则它会转到正确的页面。

感谢任何帮助。

【问题讨论】:

  • 请提供更多信息:哪个服务器、哪个操作系统提供 RewriteRule,如果它是在通用服务器配置中还是在虚拟主机配置中或在 .htaccess 中...我们需要了解更多信息。
  • 对不起,我不明白“它不会在地址栏中隐藏实际地址”。 URL 的 type 有什么用?为什么你认为一旦用户输入了 URL,这个 URL 就会改变?

标签: mod-rewrite


【解决方案1】:

您正在描述mod_rewrite 的制作方式,并且您对这种方式感到惊讶。这很有趣:)

而且你似乎在混用东西。

mod_rewrite 在这里隐藏复杂的 URL 并使它们更简单(一般来说)。

你说错了 "www.site.com/page.php?page=merchandise" 到 www.site.com/merchandise"

实际情况可能恰恰相反:

  • 您希望上网者输入“http://www.site.com/merchandise”
  • 您希望您的服务器将“http://www.site.com/merchandise”更改为“http://www.site.com/page.php?page=merchandise”
  • 您没有得到的是,99.9999% 的时间网站管理员不希望客户看到真实页面是“http://www.site.com/page.php?page=merchandise”

...

这就是mod_rewrite 的作用:它查看传入的 URL,并在内部修改它们。所以 webdevelopper (= you) 可以使用RewriteRule's 转换 URL 并制作任何你想要的东西,但它总是进入服务器。唯一的例外是当您想明确地将客户端重定向到另一个 URL 时,您可以使用“[F]”指令,意思是“转发”。

希望对你有帮助

【讨论】:

  • 也许我说错了,但请查看我所做的编辑。希望它能解释更多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 2019-03-15
  • 2021-10-19
  • 2020-03-18
  • 2012-06-14
  • 2014-11-15
  • 1970-01-01
相关资源
最近更新 更多