2013-03-07 102 views
3

我有一個非常簡單的重寫規則。我的整個.htaccess文件如下:.htaccess URL重寫失敗 - 在此服務器上找不到請求的URL

RewriteEngine On 
ReWriteRule ^([a-zA-Z0-9\-]+)$ /index.php?page=$1 [L,NC] 

這對我的一臺運行Apache的開發機器完美運行。但是,在我運行Apache的其他開發機器(mod_rewrite在apache2handler下的PHP信息中列出)上不起作用。它也不適用於運行Windows的活動服務器。

我已經嘗試添加以下內容:

RewriteBase/ 

我沒有mod_rewrite的嚮導,我敢肯定,這是一個非常簡單的解決方案,但它是目前躲避我,守收到404未找到錯誤。

有一件事情在兩個不起作用的環境中有所不同,就是該網站不在URL的根目錄。因此,例如,它是http://localhost/sitewww.example.com/site

我曾嘗試過各種語法調整的.htaccess文件,並且還加入了網站基礎:

RewriteBase /site 
+0

嘗試只是讓規則^在那裏。* $用於調試 – Brad 2013-03-07 22:24:08

+0

這似乎並沒有任何區別。我也試圖明確寫出規則。例如'ReWriteRule^home /index.php?page=home [L,NC] ' – user1100149 2013-03-08 10:42:07

+0

另外,您在網頁瀏覽器中輸入什麼網址?您必須輸入www.example.com/site/foo才能正常工作。你可以進入你的Apache日誌並尋找error_log來查看404'究竟是什麼頁面。 – Brad 2013-03-08 20:51:08

回答

3

刪除「RewriteBase /網站」和嘗試刪除在/ index.php的前的 斜線should't與使用的.htaccess

RewriteEngine On 
ReWriteRule ^([a-zA-Z0-9\-]+)$ index.php?page=$1 [L,NC] 
+0

不幸的是沒有喜悅。 – user1100149 2013-03-08 21:01:08

+0

目錄http:// localhost/site/home/ALSO是否存在於現實中?這將阻止重定向到index.php?page = home。 – 2013-03-09 12:19:04

+0

'家'不是一個目錄。它標識頁面,所以應該重寫爲'index.php?page = home' – user1100149 2013-03-12 09:23:53