2013-05-01 72 views
1

我想写一个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

+0

你真的想用** nginx **来使用.htaccess吗,还是应该使用** apache **? http://wiki.nginx.org/LikeApache-htaccess – grossvogel 2013-05-01 18:08:12

+0

我们正在使用Magento框架,默认情况下我使用.htaccess。 – 2013-05-01 18:20:34

+0

该请求可能有一个尾部斜线。您可以尝试使用'RewriteRule^somepage /?$/abc/somepage.php'。如果仍然不起作用,.htaccess文件的位置和选项是什么,如果有的话? – 2013-05-02 00:24:59

回答

1

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

但是如果你想请求被悄悄改写(这样Apache知道哪里可以找到的资源,但用户的网络浏览器只是看到了“干净”的网址),那么你不想'R”标志。

尝试以下操作:

RewriteRule ^somepage$ /abc/somepage.php 

这样Apache获取从/abc/somepage.php的内容,而不是这只会改写为/ SomePage的请求。

+0

感谢您的信息,但我只希望它具体是'somepage' – 2013-05-01 18:19:06

+0

在这种情况下,我已经编辑上述答案,以适应。 – Bobulous 2013-05-01 18:21:05

+0

这不起作用:\ – 2013-05-01 18:24:18

0

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

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

+1

你有没有提到'nginx可以像Apache一样利用.htaccess文件?在我见过的所有内容中,nginx开发人员拒绝支持.htaccess,因为(他们相信,而且我不反对),这对于服务器配置来说是一个糟糕的机制。 – grossvogel 2013-05-02 16:29:10

+0

不,我不知道。我重申了我的答案。我也不反对。 – 2013-05-02 16:56:37