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 很陌生,现在它可以使用上面的代码完成我想要的操作,我可以转到“localhost/anime/1”,它会显示正确的页面,但问题出在那个页面我有以下

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

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

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

我不知道如何防止这种情况,它开始让我烦恼!我可以进入图像文件夹并将动漫文件夹更改为其他文件夹并且工作正常,但我宁愿学习如何修复重写规则。

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

4

2 回答 2

1

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

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

或者避免所有这些点的混乱,并使用根相对网址;像这样

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

(注意前面的斜线)

于 2013-06-02T13:11:37.073 回答
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]
于 2013-06-03T11:54:28.427 回答