2013-05-01 71 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