Помощь

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

37 8
user avatar
Пользователь
На сайте 8 лет
Сообщений : 36
Репутация : 0
8 лет назад
Допустим есть ссылка domen.ru/topor.php(не только одну страницу, а весь сайт).
Я хочу что бы она была доступно только по domen.ru/topor, а когда пользователь введет вручную domen.ru/topor.php перекинула бы на страницу с ошибкой 404.

Как это сделать?
user avatar
Пользователь
На сайте 8 лет
Сообщений : 36
Репутация : 0
8 лет назад
ZKolyaNZ,

Не работает этот код, когда пытаюсь загрузить domen.ru/topor пишет ошибка 404
user avatar
Пользователь
На сайте 15 лет
Сообщений : 91
Репутация : 0
8 лет назад
Artsem,
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
user avatar
Пользователь
На сайте 8 лет
Сообщений : 36
Репутация : 0
8 лет назад
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(не работал)
user avatar
Пользователь
На сайте 13 лет
Сообщений : 1859
Репутация : 0
8 лет назад
Это называеться ЧПУ (Человеко понятный урл)

Цитата: ArtsemНо он работает в двух видах одновременно как с domen.ru/topor так и с domen.ru/topor.php
Все правильно, теперь в самом файле ты должен запретить прямой вызов файла

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

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


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

P.S. В моих 4 и 5 скрипте так сделано. там можешь посмотреть на пример в реале как делать запрет вызова файла с адресной строки. Ну и после проверки что вызов с адресной строки ты можешь писать что делать, у меня стоит exit() но ты можешь еще после добавить редирект на твою заглушку 404
user avatar
Пользователь
На сайте 12 лет
Сообщений : 66
Репутация : 0
8 лет назад
Цитата: ArtsemТоже не работает у меня сейчас установлен вот такой:

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


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]

user avatar
Пользователь
На сайте 12 лет
Сообщений : 66
Репутация : 0
8 лет назад
Цитата: ZKolyaNZа теперь ребятки подумайте в чем разница между прямым запуском апачевского реврайта и через модуль апача , правильно *правила хостинга*

У меня работает!На vds!
user avatar
Пользователь
На сайте 13 лет
Сообщений : 1859
Репутация : 0
8 лет назад
Цитата: swergНа vds!
не в этом дело. а в ПО сервера, будь то впс, вдс, виртуальный хостинг или даже локальный сервер. Все зависит от ПО сервера апач.
Автор темы
author avatar
Artsem
Пользователь
На сайте 8 лет
Сообщений 36
Тем 9
Репутация 0
Теги темы
Автор не добавил тегов для этой темы
Ответить
Написал(а):