我的 .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
product_info.php
中的Js缩放使用情况:
<script>
$("#product_pix").elevateZoom();
</script>
即使是绝对路径也不能解决问题。
如何解决这个问题?
最佳答案
您的问题是,您的相对 URI 的基数已更改。原来基数是/
当页面为/product_info.php
时,浏览器正确填写相关链接 /
根据。但是当浏览器进入像 /product_info/foo/bar
这样的页面时基地突然变成/product_info/foo/bar
它尝试将其附加到所有相对 URL 的前面,因此它们都不会加载。
您可以将链接设置为绝对链接,也可以更改页面标题中的 URI 基数(在 <head> </head>
标记之间):
<base href="/">
关于重写动态url后的Javascript文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34370938/