简单的重写规则与nginx
我想写一个RewriteRule来做一个简单的URL。我希望用户能够输入进入简单的重写规则与nginx
www.example.com/somepage
,并把它带他们到
www.example.com/abc/somepage.php
这又如何在.htaccess中做什么?
我已经试过这些都无济于事:
RewriteRule ^somepage$ abc/somepage.php [L]
RewriteRule ^/somepage$ /abc/somepage.php [L]
我在做什么错?
编辑: nginx也可以在其配置文件中处理重写(我认为其实是首选),这是我的情况(请参阅下面的答案)。 HTH
如果您希望将用户的Web浏览器重定向到您的PHP页面,那么您需要在RewriteRule结尾处使用R=301
标志。
但是如果你想请求被悄悄改写(这样Apache知道哪里可以找到的资源,但用户的网络浏览器只是看到了“干净”的网址),那么你不想'R”标志。
尝试以下操作:
RewriteRule ^somepage$ /abc/somepage.php
这样Apache获取从/abc/somepage.php的内容,而不是这只会改写为/ SomePage的请求。
感谢您的信息,但我只希望它具体是'somepage' – 2013-05-01 18:19:06
在这种情况下,我已经编辑上述答案,以适应。 – Bobulous 2013-05-01 18:21:05
这不起作用:\ – 2013-05-01 18:24:18
我们的nginx服务器正在使用.htaccess文件(因为我之前实现了重写),但现在它正在处理其配置文件(.conf)中的重写(这是推荐的方法)。
我没有权限修改.conf文件,所以我不会发布任何未经测试的代码..希望这有助于某人!
你有没有提到'nginx可以像Apache一样利用.htaccess文件?在我见过的所有内容中,nginx开发人员拒绝支持.htaccess,因为(他们相信,而且我不反对),这对于服务器配置来说是一个糟糕的机制。 – grossvogel 2013-05-02 16:29:10
不,我不知道。我重申了我的答案。我也不反对。 – 2013-05-02 16:56:37
你真的想用** nginx **来使用.htaccess吗,还是应该使用** apache **? http://wiki.nginx.org/LikeApache-htaccess – grossvogel 2013-05-01 18:08:12
我们正在使用Magento框架,默认情况下我使用.htaccess。 – 2013-05-01 18:20:34
该请求可能有一个尾部斜线。您可以尝试使用'RewriteRule^somepage /?$/abc/somepage.php'。如果仍然不起作用,.htaccess文件的位置和选项是什么,如果有的话? – 2013-05-02 00:24:59