Правило перезаписи .htaccess, вызывающее ошибку JavaScript? - PullRequest
0 голосов
/ 31 января 2011

У меня странная проблема: когда я пишу правило, соответствующее любому символу (. *), Firebug выдает синтаксическую ошибку 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, она отлично работает.

Ответы [ 2 ]

4 голосов
/ 01 февраля 2011

Я подозреваю, что ваши javascript-коды также содержатся в пути / 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 голосов
/ 10 сентября 2013

Другая возможность будет

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

добавить это к вашим условиям

и добавить параметр в файлы, которые вы не хотите перенаправлять

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