.htaccess переписывает не работает после миграции с сервера Windows - PullRequest
0 голосов
/ 28 октября 2011

Хорошо, поэтому я разрабатываю сайт для своего работодателя в подпапке одного из их других живых сайтов. Структура URL в разработке была http://our-live-site.net/our-dev-site.com/index.php. Сервер разработки работает под Windows, и новый сервер, на который я только что его перенес, - сервер * nix Apache. Я не совсем уверен, является ли это проблемой из-за отсутствия дополнительного каталога впереди, или это различие в Windows / Linux в том, как они анализируют файл .htaccess. Я склонен верить первому, а не второму после небольшого исследования по этому вопросу. У меня есть только 3 правила в моем файле .htaccess, и я изолировал проблему с двумя последними, переписывает.

    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteRule ^(inc/ajax|inc/pages|js|fonts|moving-tips)($|/) - [L]

->    RewriteRule ^(.*).php template.php?page=$1 [NC]
->    RewriteRule ^(.*).php template.php?location=$1 [NC][QSA]
    </IfModule>

Что мне нужно сделать, это передать все запросы на http://new-site.com/some-page.php на http://new-site.com/template.php?page=some-page. Мне также нужно сохранить опцию захвата другого $_GET var для наших страниц местоположения (они используют другой шаблон), следовательно, RewriteRule ^(.*).php template.php?location=$1 [NC][QSA] после первого переписывания. У меня такое ощущение, что я упускаю из виду что-то действительно простое, в основном из-за ... простоты правил. Любая помощь будет принята с благодарностью, я уверен, что это просто вопрос взгляда на это свежим взглядом.

1 Ответ

0 голосов
/ 28 октября 2011

Попробуйте:

RewriteCond %{REQUEST_URI}   !^/template.php
RewriteRule ^(.*).php template.php?page=$1&location=$1    [NC,L]

, чтобы заменить оба этих RewriteRules

Что происходит, когда apache перезаписывает, он перенаправляет внутренне, и переписанный путь передается НАЗАД через все правила, толькоостановка, когда переписанный путь (не строка запроса) совпадает с не переписанным путем.

...