mod_rewrite打破了jquery

时间:2017-01-09 23:02:53

标签: jquery .htaccess mod-rewrite

我的mod_rewrite文件中有以下.htaccess规则:

RewriteEngine On

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /shopping.php?do=display_product&item_number=$1&d=$2&c=$3&t=$4 [L]

它在网站上运行正常,但我正在根目录下的子目录中处理新的移动版本,并且jquery引导程序的东西不显示。

似乎是将jquery javasript重定向到另一个javascript文件。一世 我认为重写规则只会对shopping.php?起作用。我测试的页面称为front_page.php。有谁知道为什么这打破了jquery的东西?

1 个答案:

答案 0 :(得分:0)

不,这将重定向任何深度为四个子目录的目录,或者目录中三个子目录深度的任何文件。 shopping.php是替代品,而非匹配品。

选项1

要限制它,您可以放置​​更具体的内容以匹配第一个“目录”。它说它是替换中的项目编号,所以如果它只是数字,这将起作用(只匹配所有数字的顶级“目录”):

RewriteRule ^(\d+)/([^/]+)/([^/]+)/([^/]+)/?$ /shopping.php?do=display_product&item_number=$1&d=$2&c=$3&t=$4 [L]

如果项目编号不仅仅是数字,请告诉我格式,可以更新此方法。

选项2

另一种选择是在脚本目录上放置一个例外,因此规则会忽略其中的任何内容:

RewriteCond %{REQUEST_URI} !^/mobile/
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /shopping.php?do=display_product&item_number=$1&d=$2&c=$3&t=$4 [L]

要为顶级目录添加更多例外,只需在规则之前添加更多RewriteCond行格式相同的行。

选项3

第三个选项是测试顶级目录是否存在,并且只处理该规则,但是我不喜欢它的性能,每次规则运行时都必须轮询文件系统是仅使用匹配的更好,更快的选项。