Как скрыть расширение .php в .htaccess? (Как скрыть расширение .php в .htaccess?)
Цитата: Artsem от 30.01.2018, 16:07Допустим есть ссылка domen.ru/topor.php(не только одну страницу, а весь сайт).
Я хочу что бы она была доступно только по domen.ru/topor, а когда пользователь введет вручную domen.ru/topor.php перекинула бы на страницу с ошибкой 404.Как это сделать?
Допустим есть ссылка domen.ru/topor.php(не только одну страницу, а весь сайт).
Я хочу что бы она была доступно только по domen.ru/topor, а когда пользователь введет вручную domen.ru/topor.php перекинула бы на страницу с ошибкой 404.
Как это сделать?
Цитата: serega393 от 30.01.2018, 20:40Artsem,
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Artsem,
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Цитата: Artsem от 30.01.2018, 22:21serega393,
Тоже не работает у меня сейчас установлен вот такой:
# Редирект включен
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(не работал)
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(не работал)
Цитата: Pretorian от 30.01.2018, 23:08Это называеться ЧПУ (Человеко понятный урл)
Цитата: ArtsemНо он работает в двух видах одновременно как с domen.ru/topor так и с domen.ru/topor.php
Все правильно, теперь в самом файле ты должен запретить прямой вызов файладобав перед вызовом нужного скрипта константу, а в вызываемом скрипте проверку если константы нет о скрипт не выполнять, например
define ("qw", "y");
include (file);в файле проверкаа
if(!defined("qw")) die;
скриптP.S. В моих 4 и 5 скрипте так сделано. там можешь посмотреть на пример в реале как делать запрет вызова файла с адресной строки. Ну и после проверки что вызов с адресной строки ты можешь писать что делать, у меня стоит exit() но ты можешь еще после добавить редирект на твою заглушку 404
Это называеться ЧПУ (Человеко понятный урл)
Все правильно, теперь в самом файле ты должен запретить прямой вызов файла
добав перед вызовом нужного скрипта константу, а в вызываемом скрипте проверку если константы нет о скрипт не выполнять, например
define ("qw", "y");
include (file);
в файле проверкаа
if(!defined("qw")) die;
скрипт
P.S. В моих 4 и 5 скрипте так сделано. там можешь посмотреть на пример в реале как делать запрет вызова файла с адресной строки. Ну и после проверки что вызов с адресной строки ты можешь писать что делать, у меня стоит exit() но ты можешь еще после добавить редирект на твою заглушку 404
Цитата: swerg от 30.01.2018, 23:15Цитата: 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>
Попробуй так!
<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>
Цитата: swerg от 31.01.2018, 12:58Цитата: ZKolyaNZа теперь ребятки подумайте в чем разница между прямым запуском апачевского реврайта и через модуль апача , правильно *правила хостинга*У меня работает!На vds!
У меня работает!На vds!
Цитата: Pretorian от 31.01.2018, 13:43Цитата: swergНа vds!
не в этом дело. а в ПО сервера, будь то впс, вдс, виртуальный хостинг или даже локальный сервер. Все зависит от ПО сервера апач.
не в этом дело. а в ПО сервера, будь то впс, вдс, виртуальный хостинг или даже локальный сервер. Все зависит от ПО сервера апач.