RewriteRule更改HTML图像链接

时间:2013-06-02 13:00:31

标签: .htaccess mod-rewrite

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现在它用我上面的代码做我想要的东西我可以去“localhost / anime / 1”它会显示正确的页面但是问题在那个页面上我有以下

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

重写规则似乎改变了这一点,最终变成了

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

我无法弄清楚如何防止这种情况并开始惹恼我!我可以进入images文件夹并将动漫文件夹更改为其他内容并且工作正常但我宁愿学习如何修复重写规则。

感谢您的帮助!希望我能很好地解释我的问题。

2 个答案:

答案 0 :(得分:1)

由于你在/anime/1/,你需要起两个级别,所以你应该使用

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

或者避免所有这些乱七八糟的东西,并使用root相对url;像这样

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

(注意前导斜线)

答案 1 :(得分: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]