Как сделать .htaccess RewriteRule, не затрагивая правила index.php - PullRequest
2 голосов
/ 18 июля 2011

Я использую запросы GET в своем проекте и хочу переписать URL-адреса таким простым способом: если я зайду на mydomain.com/test, он запросит mydomain.com/get.php?txt=test на моем сервере.

Вот мой .htaccess RewriteRule, он работает нормально, но проблема в том, что он также влияет на мой index.php, поэтому, если я перехожу на главную страницу, он запускается: mydomain.com/get.php?txt=test запрос и не открытие mydomain.com/index.php из-за моего RewriteRule.

Options +FollowSymLinks
RewriteEngine On
RewriteRule (.*)$ get.php?url=$1 [L]

Я не хочу делать никаких дополнительных подуровней в пути, как mydomain.com/1/test, он должен быть на следующем уровне root.

Любая помощь приветствуется. Спасибо!

Ответы [ 3 ]

2 голосов
/ 18 июля 2011

Самый распространенный способ - добавить условия только для перезаписи несуществующих ресурсов (файлов и папок):

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) get.php?url=$1 [L]

Другой возможный подход (который отлично подойдет для вашего исходного запроса ) - игнорировать такое правило, когда запрашивается /index.php:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/index\.php
RewriteRule (.*) get.php?url=$1 [L]

Подход № 1 настоятельно рекомендуется и в значительной степени универсален. Но .. возможно вы также обслуживаете все ресурсы (изображения / стили / javascripts / etc) через get.php (я не знаю, что делает ваше приложение и как оно работает), поэтому я предложил другой подход.

0 голосов
/ 18 июля 2011

Это было бы хорошо?

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteRule (.*)$ get.php?url=$1 [L]
0 голосов
/ 18 июля 2011

Добавить

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

перед правилом перезаписи.

...