Как скрыть .php от адресной панели
-
27-10-2019 - |
Вопрос
Я использую PHP для создания веб -приложений, но я хочу, чтобы мои веб -страницы без расширения .php в адресной строке браузера. Для Импла http://www.example.com/index.php
показывает как http://www.example.com/index
В адресной панели браузера.
Как я могу это сделать?
Решение
Поместите это в файл с именем .htaccess
В вашем www-root:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([A-Za-z0-9\-]+/)*[A-Za-z0-9\-]+)?$ $1.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 ^(.+)$ /$1.php [L,QSA]
Надеяться! Это было бы полезно для кого -то !!
Вы захотите найти подходящий метод URL-rewriting Для вашего веб -сервера. Это позволяет карту
www.domain.com/page
к
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}/$1.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
Просто чтобы указать, что на более старых версиях IIS, например, IIS6 и предполагая, что вы находитесь в 32 -битном процессе, тогда Ionics Isapi Rewrite - это фантастический модуль перезаписывания URL -адресов. Внутри 64 бит в IIS 6 я обнаружил, что коммерческий продукт Helicon Isapi Rewrite 3 является отличным инструментом. Но если у вас 32 бит, ионика бесплатна и делает все, что вам потребуется.
Видеть Изменение адреса URL
В apache2.conf у меня есть
<Files data>
ForceType application/x-httpd-php
</Files>
Что значит data
рассматривается как файл PHP без расширения
Есть несколько способов сделать это.
Вы можете использовать Mod-rewrite, чтобы перевести Foo to foo.php, чтобы запросы /бар обрабатывались car.php.
Вы можете использовать каталоги и файлы по умолчанию, чтобы ссылаться на Direcory /foo /, который обрабатывается /foo/index.php
Вы можете установить PHP-сценарию в качестве обработчика для 404 ошибки, тогда вы просто ссылаетесь на несуществующие файлы, а обработчик с этим справляется с ним, как бы ему не нравилось. (Как правило, используя какую-то карту от URL-файла)
Вы можете сообщить своему веб -серверу, что все запросы на определенный веб -сервер должны быть обработаны PHP.
Первое или второе решение является самым простым, но 2 последних дают лучшую гибкость, и их варианты - это то, что делают большинство больших рамок.
В системах, использующих Apache Webserver, вы будете использовать 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}/$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]
<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 ^([^\.]+)$ $1.php [NC,L]
Это переписывает URL -адреса так, как вы намеревались.