как скрыть рассширение скриптов через .htaccess

pro_web
На сайте с 02.08.2011
Offline
109
1507

как скрыть рассширение скриптов через .htaccess ....

пример : index.php = /index/

так :

RewriteEngine on

RewriteRule ^/([^/]+)$ /$1.php [L] - не работает

Посоветуйте пожалуйста правильное решение .

вот как начинается мой htaccess

Options +FollowSymLinks

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

RewriteEngine on
RewriteRule ^/([^/]+)$ /$1.php [L]

..... вроде раздел для начинающих ,если кто небудь знает решение прошу помочь а не минусовать репутацию ....

Продам страницу в Facebook. 31к подписчиков (тематика юмор). Подробности в лс.
MA
На сайте с 16.10.2009
Offline
29
#1

RewriteEngine On - достаточно вывести 1 раз.

Чтобы

вместо site.ru/page1.php открывалось site.ru/page1

?

Можно, например, так:

RewriteRule ^(.*)(\.html|\.htm|\.php)$ $1 [L,QSA]

мануал: http://www.htaccess.net.ru/

P.S.

А это зачем?

RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC]

RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Ищу площадки без бирж под размещение статей Тематика: ландшафтный дизайн, садоводство, комнатные растения, дача и участок.
pro_web
На сайте с 02.08.2011
Offline
109
#2

так выдает ошибку

Not Found

The requested URL /index was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

вот код


Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteRule ^(.*)(\.html|\.htm|\.php)$ $1 [L,QSA]

MA
На сайте с 16.10.2009
Offline
29
#3

Если у вас отсутствует в корне сайта файл "index", то естественно он выдаст эту ошибку )

Задача какая у вас?

Для чего выполняется преобразование?

P.S.

Подробней объясните в чем суть задачи...

pro_web
На сайте с 02.08.2011
Offline
109
#4

index.php есть + еще 3 файла с расширением php

Задача стоит в том чтобы спрятать расширения и сделать ссылки вида сайт.ру/index/

MA
На сайте с 16.10.2009
Offline
29
#5

Ну прям клещами нужно вытаскивать

Попытаюсь объяснить

Адрес, который получился в результате преобразования должен соответствовать физическому документу в корне.

Т.е., допустим, у вас в корне 3 php-файла:

index.php

file2.php

file3.php

Если у сервера запрашивают /index.php , но в результате преобразования получается /index/ , сервер пытается открыть документ по умолчанию в папке /index/ , т.е. он пытается открыть /index/index.php (если в httpd.conf присутствует инструкция: DirectoryIndex index.php)

см: http://www.htaccess.net.ru/doc/htaccess/directoryIndex.php

(кстати, сайт похоже не читали, а там ответы множество вопросов)

Как тут поступить?

Можно сделат 1 точку входа на сайт - через index.php, а папки и документы передавать в виде параметров.

Т.е., например, хотите добавить на сайт страницу /page1/

для первого уровня вложения URI делает преобразование в htaccess:

RewriteRule ^([-a-zA-Z0-9_]+(\.html|\.php)?)/?$ /index.php?p1=$1 [L,QSA]

Когда запрашивается страница: /page1/, сервер открывает /index.php?p1=page1

(для браузера-клиента, однако, это по-прежнему страница /page1/

В движке сайта (в index.php) вы обращаетесь к глобальной переменной $_GET ,

а там массив с разобранным URI

в данном случае,

array (

'p1' => 'page1'

)

В зависимости от содержания этого массива рисуете ту или иную страницу сайта.

Для второго уровня вложения запись будет такой:

RewriteRule ^([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+(\.html|\.php)?)/?$ /index.php?p1=$1&p2=$2 [L,QSA]

Если открыть страницу /level1/page2/ или /level1/page2.html или /level1/page2.php ,

в $_GET попадет

array (

'p1' => 'level1',

'p2' => 'page2'

)

и так далее...

т.е. фактическое (физическое) расположение файлов и папок в корне уже не важно.

pro_web
На сайте с 02.08.2011
Offline
109
#6

Спасибо постараюсь реализовать!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий