2013-06-02 108 views
0
RewriteEngine On 

RewriteCond %{THE_REQUEST} ^\w+\ /(.*)\.php(\?.*)?\ HTTP/ 
RewriteRule^http://%{HTTP_HOST}/%1 [R=301] 

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule .* $0.php 

RewriteRule ^page/(.*)/?$ index.php?page=$1 [NC,L] 
RewriteRule ^anime/(.*)/?$ anime.php?anime_id=$1 [NC,L] 

我很新,整個使用.htaccess來重寫一個URL,現在它做了我想要的上面的代碼,我可以去「本地/動漫/ 1」和它將顯示正確的網頁,但問題是,頁面上RewriteRule更改HTML圖像鏈接

<img src="../images/anime/<?php echo $animeID; ?>/Cover.jpg" /> 

重寫規則似乎改變這一點,我有以下並最終被變成

<img src="../images/anime/1.php/1/Cover.jpg" /> 

我不知道如何防止這種情況及其開始惹惱我!我可以進入圖像文件夾並將動漫文件夾更改爲其他內容,並且工作正常,但我寧願學習如何修復重寫規則。

感謝您的幫助!希望我能夠很好地解釋我的問題。

回答

1

既然你在/anime/1/你需要獲得兩個級別,所以你應該使用

<img src="../../images/anime/<?php echo $animeID; ?>/Cover.jpg" /> 

或避免用點這一切混亂,並利用根的相對URL;像這樣

<img src="/images/anime/<?php echo $animeID; ?>/Cover.jpg" /> 

(注意斜線)

+0

我曾嘗試這些,當查看網頁源代碼,他們都變成了 重寫規則似乎添加1.PHP這是搞亂整個URL。 – DarkSynopsis

+0

Mod_rewrite不會更改html源代碼!你確定$ animeID包含正確的值嗎? – Gerben

+0

是的我敢肯定$ animeID包含正確的值,如果我改變mod_rewrite說^ title /(.*)/?$ anime.php?anime_id = $ 1 [NC,L]那麼它工作得很好我的圖像會加載但我不想/標題/ 1。 我不明白爲什麼mod_rewrite正在改變我的<?php echo $ animeID?>在我的HTML。 – DarkSynopsis

0

您需要使用RecriteCond無視你重寫規則爲現有的文件和目錄。 使用此代碼替換代碼:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php(?:\?([^\s]+)) [NC] 
RewriteRule^http://%{HTTP_HOST}/%1/%2 [R=302,L] 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -l 
RewriteRule^- [L] 

RewriteRule ^page/(.*?)/?$ /index.php?page=$1 [NC,L,QSA] 
RewriteRule ^anime/(.+?)/?$ /anime.php?anime_id=$1 [NC,L,QSA] 

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule .* $0.php [L] 
+0

我的理解確實是我需要防止現有文件和目錄受到影響,但是當我嘗試頁面anime/1 /而不是anime.php時,上述代碼不起作用?anime_id = 1現在我什麼也沒有得到。 – DarkSynopsis

+0

做了一個編輯,現在試試吧 – anubhava

+0

嗯似乎在本地主機上工作,但一旦我嘗試把它的所有頁面都是空白的。 – DarkSynopsis