Проблема .htaccess, существующие файлы .php и search.php - PullRequest
0 голосов
/ 27 сентября 2011

Я новичок в игре с .htaccess для красиво отформатированных URL-адресов, и я просто не уверен, что все делаю правильно.

Мой текущий файл .htaccess выглядит так:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^search/(.*) search.php?query=$1 [L]
RewriteRule !\.(gif|jpg|ico|css|js|txt|xml|png|swf)$ index.php

Я хочу, чтобы mysite.com/home/56/page-title перешел на index.php, где я отфильтровал число и загрузил правильную страницу индекса, которая отлично работает.

Передчто, я хочу проверить, если URL-адрес указывает на search.php, и если так перенаправить на mysite.com/search/the-search-term, это также работает нормально.

То, что не работает, этоесли я пытаюсь посетить конкретный файл .php, скажем, mysite.com/control_panel.php - он просто переводит меня в index.php, но я подумал, что следующая строка остановила это?кто-то может объяснить мне это было бы здорово :) 1013

Спасибо!

1 Ответ

1 голос
/ 27 сентября 2011

1. Порядок правил имеет значение

2. Директивы RewriteCond будут применяться только к ОДНОМУ RewriteRule, который следует за ним.Если вам нужно применить одни и те же условия к нескольким правилам, вы должны написать их несколько раз или изменить логику обработки перезаписи (доступно несколько подходов).

Попробуйте это:

RewriteEngine On

RewriteRule ^search/(.*) search.php?query=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(gif|jpg|ico|css|js|txt|xml|png|swf)$ index.php [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...