2013-02-22 90 views
0

我嘗試使用搜索引擎友好的URL爲我的網站,我的目標是要改寫product/131/ABCDEFGHproductpage.php?id=131.htaccess的重寫問題

我實現了這個現在重寫路徑,並打開正確的頁面

的.htaccess代碼

RewriteEngine on 
RewriteBase/
RewriteRule ^product/(([^/]*))/([^/]*)$ /cprrpc/productpage.php?id=$1 [L] 

現在我又遇到了一個與內部鏈接有關的問題,目前這個頁面上的所有圖片等都是用相對路徑綁定的。

現在,這是行不通的,因爲他們都在不同的路徑正在尋找,

我打開另一種方法或更改htaccess文件。

回答

1

您的網址被扭曲所改寫網址結構,因爲現在有兩個目錄級別。而不是使用相對URL 到當前目錄爲您的資源使用主導斜槓或者您可以使用PHP在所有資源前向您的應用程序打印「根路徑」。

例如,而不是使用相對URL(當前目錄):

<img src="images/plus.png" />(擴展到本地主機/cprrpc /產品/ 131 /圖像/ gplus.png

你可以使用前導斜槓這使得相對於捲筒紙根的網址:

<img src="/cprrpc/images/plus.png" />(擴展到本地主機/cprrpc /圖像/ gplus.png

或者你可以打印Web根目錄使用PHP:

<img src="<?php echo $WEB_ROOT ?>/images/plus.png" />(擴展到本地主機/cprrpc /圖片/ gplus.png

+0

但隨着我添加這些條件,我的原始頁面也不打開。可能是我錯過了什麼? – Kasma 2013-02-22 11:09:54

+0

那麼這些條件只會修復現有位置*/product/xxx/yyy ... *中的資源,但不會與其他任何內容匹配。基本上它不會影響你的重寫,除非文件或目錄已經存在於你的文件系統中。假設你正在嘗試重寫'product/131/ABCDEFGH',但是你也有這個確切的文件結構(我懷疑它),那麼現有的文件/目錄將會照常執行。但是如果你刪除了它的工作條件再次? – kjetilh 2013-02-22 11:20:34

+0

對不起,您的代碼沒有丟失我的頁面,但仍然沒有打開圖像 加載資源失敗:服務器響應狀態爲404(未找到)http:// localhost/cprrpc/product/131/images/gplus.png 因爲這個網頁圖片是相對於這個主url而言是cprprc/images/glus.png – Kasma 2013-02-22 11:22:46

1

您需要允許Apache來從自己的真實位置爲現有文件:

RewriteEngine on 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^product/(([^/]*))/([^/]*)$ /cprrpc/productpage.php?id=$1 [L] 

這意味着Apache將忽略重寫如果請求的圖像..

+0

但我添加了這些條件,我原來的改寫也沒有打開。可能是我錯過了什麼? – Kasma 2013-02-22 11:09:34

+0

我錯過了!否則 – Andrew 2013-02-22 11:14:38

+0

抱歉,您的代碼沒有丟失我的頁面,但仍然沒有打開圖像 加載資源失敗:服務器響應狀態爲404(未找到)http:// localhost/cprrpc/product/131 /images/gplus.png 因爲此頁面圖片與主要網址相關,因此您使用的是相對圖片路徑,請嘗試使用絕對路徑:cprprc/images/glus.png – Kasma 2013-02-22 11:23:05