Вопрос

Я использую 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]

Надеяться! Это было бы полезно для кого -то !!

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

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 бит, ионика бесплатна и делает все, что вам потребуется.

http://iirf.codeplex.com/

В 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 -адреса так, как вы намеревались.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top