it-swarm.com.ru

как скрыть .php из адресной строки

Я использую php для создания веб-приложений, но мне нужны мои веб-страницы без расширения .php в адресной строке браузера. Например,http://www.example.com/index.phpпоказывает какhttp://www.example.com/indexв адресной строке браузера.

Как я могу это сделать?

8
World

Поместите это в файл с именем .htaccess в вашем WWW-корне:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([A-Za-z0-9\-]+/)*[A-Za-z0-9\-]+)?$ $1.php

Это работает, если вы используете Apache и у вас активирован mod_rewrite.

10
Karl Laurentius Roos

Просто создайте файл .htaccess в wamp/www/и скопируйте и вставьте этот код.

Options +FollowSymlinks


RewriteEngine On


RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f


RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}.php -f

RewriteRule ^(.+)$ /$1.php [L,QSA]

Надежда! это было бы полезно для кого-то !!

5
Purushottam

Вы захотите найти подходящий метод url-rewriting для вашего веб-сервера. Это позволяет вам карту

www.domain.com/page

в

www.domain.com/page.php

3
Dutchie432
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# To externally redirect /dir/foo.php to /dir/foo/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]

# To internally redirect /dir/foo/ to /dir/foo.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
3
Ikhwanul Fikri

В системах, использующих веб-сервер Apache, вы должны использовать mod_rewrite.

В более новых версиях IIS вы можете использовать их версию mod_rewrite. На старых версиях вам нужно купить плагин.

Статья переполнения стека

Поиск переполнения стека, и вы должны найти ответы на уже заданные вопросы.

1
phaedra

Просто отметим, что в более старых версиях IIS, например, IIS6 и при условии, что вы находитесь в 32-битном процессе, IONICS ISAPI Rewrite - это фантастический бесплатный модуль перезаписи URL. Внутри 64-битной версии IIS 6 я нашел коммерческий продукт Helicon ISAPI Rewrite 3 отличным инструментом. Но если вы используете 32-битную версию, IONICS бесплатен и делает все, что вам потребуется.

http://iirf.codeplex.com/

1
REA_ANDREW
1
kempsam

В Apache2.conf у меня есть

<Files data>    
 ForceType application/x-httpd-php    
</Files>

Это означает, что data обрабатывается как PHP файл без расширения

1
pavium
little modification - better to use REQUEST_URI and check for the directory


# Turn mod_rewrite on

RewriteEngine on

# To externally redirect /dir/foo.html to /dir/foo/
RewriteCond %{REQUEST_URI} ^(.+)\.html?$ [NC]
RewriteRule ^ %1 [R,L]

# To internally redirect /dir/foo/ to /dir/foo.html
RewriteCond %{DOCUMENT_ROOT}/$1 !-d
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.*?)/?$ $1.html [L]

# To externally redirect /dir/foo.html to /dir/foo/
RewriteCond %{REQUEST_URI} ^(.+)\.html?$ [NC]
RewriteRule ^ %1 [R,L]

# To internally redirect /dir/foo/ to /dir/foo.html
RewriteCond %{DOCUMENT_ROOT}/$1 !-d
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.*?)/?$ $1.html [L]
1
hcktheroot

Есть несколько способов сделать это.

Вы можете использовать mod-rewrite, чтобы переписать foo в foo.php, чтобы запросы/bar обрабатывались /bar.php.

Вы можете использовать каталоги и файлы по умолчанию, так что вы ссылаетесь на директорию/foo /, которая обрабатывается /foo/index.php

Вы можете установить php-скрипт в качестве обработчика для ошибок 404, затем вы просто ссылаетесь на несуществующие файлы, и файл-обработчик работает с ним так, как ему нравится. (обычно используя какую-то карту из URL в php-файл)

Вы можете сообщить своему веб-серверу, что весь запрос на определенный веб-сервер обрабатывается php.

Первое или второе решение является самым простым, но два последних дают лучшую гибкость, и их варианты - то, что делает большинство более крупных платформ.

1
Agrajag

Вот учебник для начинающих для перезаписи URL.

1
mcgrailm

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

0
prajeesh loremine