2012-05-16 36 views
4

我想爲我的網站創建平面鏈接。 htaccess的代碼如下:自定義平面鏈接的mod_rewrite apache卡住

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^([0-9A-Za-z]+)?$ /index.php?page=$1 [L] 
    RewriteRule ^([0-9A-Za-z]+)/?$ /index.php?page=$1 [L] 
</IfModule>` 

現在我的網站工作可通過print_r($_GET)可以看到並獲得所有的值。

我的網站有這樣的代碼:<img src="images/icons/image.png" />,其中圖像駐留在路徑:/images/icons/up.png

現在我可以訪問我的網站:http://somedomain.com/home,一切工作正常。但是當我把:http://somedomain.com/home/,它卡住了。

圖像爲瀏覽器獲取這樣的路徑:http://somedomain.com/home/images/icons/image.png這是不可用的,它應該是:http://somedomain.com/images/icons/image.png

如何解決這個問題?

如果通過修改.htaccess來解決任何問題,將會有幫助,因爲我想爲所有鏈接使用相對路徑,而不是完整路徑。


感謝Ben Clifford的幫助。據他說,如果我將第二條規則重定向到像第一條那樣的格式,而不是index.php。那麼它應該工作。

那麼人們有什麼想法該怎麼做?我無法解決這個問題。請幫助傢伙!

+0

將base-url元標記包含在您的頭部。看看是否解決了這個問題。 – OptimusCrime

回答

1

您可以更改第二個重寫規則,將用戶重定向到非/版本的路徑,而不是index.php;那麼當這個重定向頁面被加載時,它會碰到第一條規則,並帶有正確的基本路徑。

問題是圖像名稱會替換URL中最後一個/之後的所有內容:當您說somedomain.com/home時,圖像文件名將附加到somedomain.com/,但在第二種情況下,最後的/是家中。我認爲,使用重寫規則修剪這個/關閉會解決這個問題。

+0

好的,明白了。但是,如果您按照您的說法爲重定向構建代碼將會很有幫助,因爲我是這個mod_rewrite的新手。 –

+0

也許是這樣的:RewriteRule ^([0-9A-Za-z] +)/?$/$ 1 [R] –

+0

是多數民衆贊成在工作......謝謝! :) –