Если файла нет, перепишите URL - PullRequest
0 голосов
/ 22 января 2010

У меня есть два файла .htaccess, которые мне нужно объединить в один.

Первый делает простое удаление расширения файла.

Второй переписывает все запросы на переход к стороннему приложению, сохраняя наш URL.

Мне нужно, чтобы правила были достаточно умными, чтобы не смотреть на второй сервер, если файл существует на первом.

Правило1:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

Правило 2:

Options +FollowSymLinks +Indexes
RewriteEngine on
RewriteRule ^(.*)$ http://third.party.com/$1 [P]
# RewriteCond %{THE_REQUEST}([^?\ ]+) 
# RewriteRule ^.*$ index.php/%1

Я далёк от волшебника .htaccess, так что я весь в ушах для предложений.

Ответы [ 2 ]

0 голосов
/ 02 февраля 2010

Итак, хотите ли вы, чтобы одно правило работало для одного сайта, а другое - для другого?Если да, вы можете использовать директивы RewriteCond% {HTTP_HOST}, чтобы ограничить их область действия.

0 голосов
/ 22 января 2010

Вы можете добавить флаг L, чтобы остановить переписывание в данном правиле. Например:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

RewriteRule ^(.*)$ http://third.party.com/$1 [P]
# RewriteCond %{THE_REQUEST}([^?\ ]+) 
# RewriteRule ^.*$ index.php/%1

См. документы mod_rewrite (поиск "Остановить процесс перезаписи").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...