как спрятаться.PHP из адресной строки

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

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

13 ответов


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

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

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


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

Options +FollowSymlinks


RewriteEngine On


RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f


RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}.php -f

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

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


вы захотите найти соответствующий метод url-переписывание веб-сервера. Это позволяет вам map

www.domain.com/page

to

www.domain.com/page.php


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}/.php -f
RewriteRule ^(.*?)/?$ .php [L]

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

http://iirf.codeplex.com/



в apache2 не.конф у меня

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

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


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

вы можете использовать mod-rewrite для перезаписи foo to foo.php, чтобы запросы на /bar обрабатывались /bar.РНР.

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

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

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

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


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

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

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

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


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


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}/ !-d
RewriteCond %{DOCUMENT_ROOT}/.html -f
RewriteRule ^(.*?)/?$ .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}/ !-d
RewriteCond %{DOCUMENT_ROOT}/.html -f
RewriteRule ^(.*?)/?$ .html [L]

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

вставьте этот код в свой .файл htaccess на удаленном сервере:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ .php [NC,L]

Это перепишет URL-адреса так, как вы намеревались.