2011-01-31 122 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>