第一次使用RewriteRule,所以我做了
RewriteRule ^details/(.*)/(.*)$ /details.php?id=$1&name=$2 [NC]
但是图像,js等存在一些问题。例如图像不起作用。当我试图找到路径details/3367/images/coins-icon.png
有没有办法解决它?
我试过
RewriteRule ^details/(.*)/images/(.*)$ /images/$1
但这似乎不起作用。
答案 0 :(得分:1)
从重写中排除现有文件和目录:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
此外,您应该使用<base href>
或绝对网址(以正斜杠/
开头),以防止浏览器根据相对网址访问图像文件。
因此,当您查看页面/details/456/
并且页面上有图片images/456/foo.jpg
时,浏览器会搜索/details/456/images/456/foo.jpg
。要防止这种情况发生,请使用<base href>
或绝对网址(/images/456/foo.jpg
)。
答案 1 :(得分:0)
你写的规则是正确的,但不是你想要的。
RewriteRule ^details/(.)/(.)$ /details.php?id=$1&name=$2 [NC]
模式中的(。)将匹配任何单个字符并捕获它。您可能希望捕获多个这样的字符:
RewriteRule ^details/(.+?)/(.+?)$ /details.php?id=$1&name=$2 [NC]
+是让编译器知道你想要一个或多个匹配,并且?让编译器知道捕获尽可能少的字符(以防止它比下一个/更远)