2011-01-31 123 views
0

我有一个奇怪的问题,如果我写一条规则来匹配任何字符(。*),firebug会抛出一个javascript语法错误。.htaccess重写规则导致javascript错误?

我的原则是:

RewriteRule ^news/story/(.*)? index.php?page=viewNews&story=$1 [L,NC] 

出现的错误是:

syntax error 
[Break On This Error] <!DOCTYPE html PUBLIC "-//W3C//DTD XHT.../xhtml1/DTD/xhtml1-transitional.dtd"> 

如果我改变规则是:

RewriteRule ^news/story/(\d+)? index.php?page=viewNews&story=$1 [L,NC] 

它工作正常,但只对数字显然。我希望它也适用于文本,因此是通配符。

如果我直接进入index.php?page = viewNews & story = test + story页面,它可以正常工作。

+0

如果在页面上返回一个链接脚本文件的html页面,请查看firebug。 – 2011-01-31 17:09:53

+0

Firebug是指一个链接的脚本,是的。取出该脚本然后为下一个链接的脚本带来相同的错误,依此类推。如果我把所有的JavaScript文件都放出来,它就可以工作。但是,我不相信javascript是错误的,因为如果我按照上面所述直接访问网址,那么就没有错误。 – psynnott 2011-01-31 18:39:55

回答

4

我怀疑你的javascripts也包含在路径/ news/story/*中,并且这些请求正在被重写。

您可以通过设置一个重写条件只会改写解决这个问题,如果一个文件(或目录)不存在:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteRule ^news/story/(.*)? index.php?page=viewNews&story=$1 [L,NC] 
0

另一个posibility是

RewriteCond %{QUERY_STRING} !rewrite=no [NC] 

这增加您的条件

并向您不希望重定向的文件添加参数

<script type="text/javascript" src="ajax.js?rewrite=no"></script>