LINUX.ORG.RU

htaccess

 , , ,


1

2

Подскажите пожалуйста, как мне сделать такое?

  1. Есть запрос
/директория/файл?строка

надо превратить в

/директория/файл.php?строка

(то есть добавить к нему .php)

  1. А если файла не существует то превратить его в
/директория/файл.html?строка

(то есть заменить .php на .html)



Последнее исправление: tonchikp (всего исправлений: 2)

Если мне не изменяет память, то где-то так:

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [NC,L]

RewriteCond %{REQUEST_URI} -f
RewriteRule 404 ^(.*)$ /$1.html

Но сразу скажу: это сырой вариант, и его надо дорабатывать.

Korchevatel ★★★★★
()
Ответ на: комментарий от Korchevatel

Спасибо за ответ! Попробую

Первые 4 строчки пробовал до того как вопрос задал

Фрагмент «$1.php» - приводит к ошибке «нет файла файл.php.php», откуда второе расширение берётся не понимаю. Думал что флаг «L» запрещает дальнейшую обработку, если это цикличная обработка, то почему именно 2 расширения, а не больше.

Пробовал фрагмент «$1», без .php, приводит к ошибке что /директория/файл отсутствует, что в принципе верно

Мне кажется в вашем решении флаг «NC» не нужен. Могу ошибаться, я не силён в htaccess.

Ещё вопрос, почему в первом блоке «$1.php», а во втором «/$1.html» с наклонной чертой (от корня сайта)? Если не указать корень сайта, где будет происходить поиск, от корня сервера?

Возможно ошибка во втором блоке «-f», должно быть «!-f», нет?

tonchikp
() автор топика
Последнее исправление: tonchikp (всего исправлений: 3)
Ответ на: комментарий от tonchikp

Я не силен в htacces но вот

Не проверял, но я бы попробовал примерно такой вариант

RewriteEngine On
RewriteBase /

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule ^(.*)$ $1.html [NC, L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . 404.php [L]

UPD: не будет работать, упрлс, надо подумать

Noob_Linux ★★★★
()
Последнее исправление: Noob_Linux (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.