重写动态url后的Javascript文件路径


Javascript file path after rewriting dynamic url

我的.htaccess文件中有这些重写规则:

RewriteEngine On
RewriteRule ^product_info/([0-9a-zA-Z]+)/([0-9a-zA-Z_-]+)$ /product_info.php?item_id=$1&item_name=$2 [L,NC]
RewriteRule ^product_info/ - [L,NC]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

一切都很好,直到重写url。Css,js,图像不再加载,所以我在一开始就添加了/来更改url路径:

<link href = "/Style/style.css" rel = "stylesheet" type = "text/css" />
<script src="/js/jquery-1.11.2.min.js"></script>
<script src="/js/navigation.js"></script>
<script src='/js/jquery-1.8.3.min.js'></script>
<script src='/js/jquery.elevatezoom.js'></script>  <----- NOT WOKRKING

这解决了我的问题。但由于某种原因,jquery.elevatezoom.js仍然不起作用,但其他一切都很好。

我在这个页面中使用jquery.elevatezoom.js

/product_info.php?item_id=451&item_name=Bicycle

重写url->/product_info/451/Bicycle

Js缩放在product_info.php:中的使用

<script>
    $("#product_pix").elevateZoom();
</script>

即使是一条绝对的道路也无法解决问题。

如何解决这个问题?

您的问题是,您的相对URI的基更改了。最初,当页面为/product_info.php时,基础为/,并且浏览器正确地填充与/基础的相对链接。但是,当浏览器转到像/product_info/foo/bar这样的页面时,基础突然变成/product_info/foo/bar,它试图将其附加在所有相关URL之前,因此没有加载它们。

您可以使链接成为绝对链接,也可以更改页面标题中的URI基(在<head> </head>标签之间):

<base href="/">