【问题标题】:Simple RewriteRule with nginx使用 nginx 的简单重写规则
【发布时间】:2013-04-25 18:38:19
【问题描述】:

我正在尝试编写一个 RewriteRule 来创建一个简单的 url。我希望用户能够输入输入

www.example.com/somepage

让他们去

www.example.com/abc/somepage.php

如何在 .htaccess 中做到这一点?

我试过这些都没用:

RewriteRule ^somepage$ abc/somepage.php [L]

RewriteRule ^/somepage$ /abc/somepage.php [L]

我做错了什么?

编辑: nginx 还可以处理其配置文件中的重写(我认为实际上是首选),这就是我的情况(请参阅下面的答案)。高温

【问题讨论】:

  • 您真的想将 .htaccess 与 nginx 一起使用,还是该标签应该是 apachewiki.nginx.org/LikeApache-htaccess
  • 我们使用的是 Magento 框架,我相信它默认使用 .htaccess。
  • 请求可能有一个斜杠。你可以试试RewriteRule ^somepage/?$ /abc/somepage.php。如果仍然不起作用,.htaccess 文件在哪里?有哪些选项(如果有)?

标签: .htaccess mod-rewrite nginx


【解决方案1】:

如果您希望用户的 Web 浏览器被重定向到您的 PHP 页面,那么您需要在 RewriteRule 末尾添加 R=301 标志。

但是如果你希望请求被静默重写(这样 Apache 知道在哪里可以找到资源,但用户的网络浏览器只看到“干净”的 URL),那么你不需要 `R' 标志。

尝试以下方法:

RewriteRule ^somepage$ /abc/somepage.php

这只会重写对 /somepage 的请求,以便 Apache 从 /abc/somepage.php 获取内容。

【讨论】:

  • 感谢您的信息,但我只希望它专门是 somepage
  • 重写是在 .conf 文件中完成的,我认为这会导致 .htaccess 中的重写被忽略。感谢您的回答。
【解决方案2】:

我们的 nginx 服务器正在使用 .htaccess 文件(因为我之前在那里实现了重写),但现在它正在其配置 (.conf) 文件中处理重写(这是推荐的方法)。

我没有修改 .conf 文件的权限,所以我不会发布任何未经测试的代码。希望这对某人有所帮助!

【讨论】:

  • 您对nginx can utilize .htaccess files much like Apache 的断言有参考吗?在我所看到的一切中,nginx 开发人员拒绝支持 .htaccess,因为(他们相信,我并不反对)这是一种糟糕的服务器配置机制。
  • 不,我没有。我改写了我的答案。我也不反对。
猜你喜欢
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 2010-11-20
相关资源
最近更新 更多