Форум

Навигация Форума
Вы должны войти, чтобы создавать сообщения и темы.

Как скрыть расширение .php в .htaccess? (Как скрыть расширение .php в .htaccess?)

Допустим есть ссылка domen.ru/topor.php(не только одну страницу, а весь сайт).
Я хочу что бы она была доступно только по domen.ru/topor, а когда пользователь введет вручную domen.ru/topor.php перекинула бы на страницу с ошибкой 404.

Как это сделать?

ZKolyaNZ,

Не работает этот код, когда пытаюсь загрузить domen.ru/topor пишет ошибка 404

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

serega393,

Тоже не работает у меня сейчас установлен вот такой:

# Редирект включен
RewriteEngine on

# Базовые редиректы
RewriteRule ^(.+)\.php$ /$1 [R,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

Но он работает в двух видах одновременно как с domen.ru/topor так и с domen.ru/topor.php

А мне нужно что бы только domen.ru/topor работал, а domen.ru/topor.php уходило в 404(не работал)

Это называеться ЧПУ (Человеко понятный урл)

Цитата: Artsem
Но он работает в двух видах одновременно как с domen.ru/topor так и с domen.ru/topor.php


Все правильно, теперь в самом файле ты должен запретить прямой вызов файла

добав перед вызовом нужного скрипта константу, а в вызываемом скрипте проверку если константы нет о скрипт не выполнять, например

define ("qw", "y");
include (file);

в файле проверкаа
if(!defined("qw")) die;
скрипт

P.S. В моих 4 и 5 скрипте так сделано. там можешь посмотреть на пример в реале как делать запрет вызова файла с адресной строки. Ну и после проверки что вызов с адресной строки ты можешь писать что делать, у меня стоит exit() но ты можешь еще после добавить редирект на твою заглушку 404

Цитата: Artsem
Тоже не работает у меня сейчас установлен вот такой:


Попробуй так!

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# всё что не касается файлов и не имеет точки в названии, добавлять в конце слеш
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)\.(.*){1,5}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

# делает редирект для *.php)
RewriteCond %{REQUEST_URI} ^(.*)\.php$
RewriteRule ^(.*)\.php$ $1\/ [L,R=301]

# убираем индексы
RewriteCond %{REQUEST_URI} ^(.*)index.php(.*)$
RewriteRule ^(.*)index.php(.*)$ $1$2 [L,R=301]

# site.ru/*/ открывает как site.ru/*.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)(\/)$ %{REQUEST_FILENAME}.php/ [L]

</IfModule>

Цитата: ZKolyaNZ
а теперь ребятки подумайте в чем разница между прямым запуском апачевского реврайта и через модуль апача , правильно *правила хостинга*

У меня работает!На vds!

Цитата: swerg
На vds!


не в этом дело. а в ПО сервера, будь то впс, вдс, виртуальный хостинг или даже локальный сервер. Все зависит от ПО сервера апач.

Авторизация
*
*
Регистрация
*
*
*
Генерация пароля