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

标签 javascript php .htaccess mod-rewrite

我的 .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/

相关文章:

php - Yii - 使用事件记录获取列的最小值、最大值

PHP 如何使用 SUM 和数学运算符打印查询

.htaccess - Mercurial 选择性地 hgignore htaccess 文件

javascript - 使用客户端 JavaScript 生成 TinyURL——需要 CORS 解决方法

java - 用于控制 Web 应用程序的 kinect API

javascript - 如何将图像 src 从 blob 字符串转换为数据 URI

javascript - 当 async prop Promise 解析时如何更新 React 组件?

php - 这是什么数据类型要保存在 mysql 1 - 4.9

jquery - htaccess 和哈希隐藏

php - 输入网站 URL 后,.htaccess 必须立即转到正确的文件和路径