【发布时间】:2015-04-11 21:03:17
【问题描述】:
我正在尝试使用apache mod_rewrite来实现以下
更改此网址: http://mywebsite.com/products.php?id=22
到这个网址 http://mywebsite.com/products/dog-house
我已启用所有内容,并且能够创建 url,并且可以毫无问题地重写。我遇到的问题是 products.php 位于 web 根目录中,并且使用新的重写规则,我的所有链接都已损坏并且我所有的 jquery 函数都不再工作了。由于重写,它现在认为这个文件在另一个子目录(产品)中,它把所有东西都扔掉了
这是我的 .htaccess 文件的副本
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^products/([a-zA-Z]+)$ product.php?id=$1
</IfModule>
我能够通过将其添加到 head 标签来解决 HTML 链接断开的问题
<base href="<?=BASE_URL;?>">
现在我面临的问题是 jquery.. 如果只有一种方法可以全局欺骗 jquery 使用'base',就像 HTML 被 base 标签欺骗一样..
这是一个不再工作的 jquery 函数示例
function search_products_by_keyword()
{
var keyword = $('#product_keyword').val();
$.post('ajax/search_products_by_keyword.php', {keyword:keyword},function(data){
$('#main_content').html(data);
});
}
我现在意识到,一开始没有考虑使用 BASE_URL 是我的错。现在我有如此大量的这些 jquery 函数,以至于一个一个地遍历所有这些函数是一个可怕的想法。
提前感谢您的帮助
【问题讨论】:
标签: php jquery apache .htaccess mod-rewrite