2017-01-09 58 views
1

,我有以下mod_rewrite规则在我.htaccess文件:的mod_rewrite打破jQuery的

RewriteEngine On 

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

这是正常工作的网站上,但我的根和jQuery的引导下工作的一个新的移动版本的子目录东西不显示。

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

回答

0

不,这将重定向任何目录是四个子目录深,或任何文件目录中的三个子目录深。 shopping.php是在替换,而不是匹配。

选项1

要限制它,你可以把更具体的匹配第一个“目录”的东西。它说,这是在更换的项目数,因此,如果这只是个数字,这将工作(仅匹配顶级“目录”是所有数字):

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

如果项目编号不只是数字,让我知道格式和这种方法可以更新。

选项2

另一种方法是把一个例外,在你的scripts目录,故治在它忽略任何东西:

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

要为顶级目录添加更多的异常,只是增加更多RewriteCond具有相同格式和规则之前的行。

选项3

第三种选择是测试如果顶级目录存在,只有当它不处理规则,但我不喜欢这样的表现,不必轮询文件系统每当规则运行时有更好,更快的选项只使用匹配。

+0

谢谢。产品编号是字母数字。 shopping.php页面位于根目录中。我测试的内容是在root/mobile中,所以我只希望它将更改应用于根目录中的/shopping.php?do=display_product&item_number=。 – David

+0

这就是重定向到你需要影响它匹配的东西。我将更新选项2以排除/移动/,并将这样做。请让我知道,并请在您满意的时候标记接受的答案。规则没有改变,你只需要在它之前添加RewriteCond。 – SuperDuperApps

+0

谢谢。我将在早上开始工作。 – David