Mod_rewrite делает именно то, что вы просите ... (да :-), это часто проблема с компьютерами).
В строке /overview.asp http://www.DOMAIN/overview
вы устанавливаете браузеротправить новый запрос с нуля, который снова начинает весь цикл сверху и перехватывается директивой ^(.*)$ index.php?q=$1
.
Прямо перед этой строкой вы должны поместить еще один RewriteCond для предотвращения ^(.*)$
Правило применения, если REQUEST_FILENAME имеет значение обзор или новость .Вы также можете просто переписать / Overview.asp на обзор [L] вместо перенаправления.
Если вы можете, установите директиву RewriteLog на самую высокую степень детализации и посмотрите на файл журнала - он обычно дает очень хорошее представление о том, что на самом деле происходит ...
РЕДАКТИРОВАТЬ - если я получаю этоверно, вы должны делать это:
RewriteCond %{REQUEST_FILENAME} ! \.asp$
RewriteCond %{REQUEST_FILENAME} ! ^overview$
RewriteCond %{REQUEST_FILENAME} ! ^news$
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Это предотвратит перенаправление любого файла, заканчивающегося на .asp, плюс тех, кто ищет обзор и новости, на index.php.
Iв любом случае подозреваю, что вы получили что-то задом наперед в отношении этого SEO.Вы действительно должны начать со структуры строки запроса, которую ожидают ваши сценарии, и использовать ее в качестве основы для построения разумной схемы адресации URL.
РЕДАКТИРОВАТЬ # 2:
Был также пробелмногие между знаком взрыва и регулярным выражением.Следующий код не приходит из памяти, как предыдущий - я протестировал на своем локальном Apache и он делает то, что должен делать (если я правильно понял ..)
RewriteCond %{REQUEST_FILENAME} !\.asp$
RewriteCond %{REQUEST_FILENAME} !overview$
RewriteCond %{REQUEST_FILENAME} !news$
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Надеюсьэто помогает