Удалить расширение .php с помощью PHP

Я мог бы здесь помочь. Я использую это, чтобы исправить свой URL, но я не могу понять, как удалить расширение .php. URL-адрес выглядит следующим образом: http://mydomain.com/page.php/foo/123/bar/456

function decode_URL_parameters() { $path = @$_SERVER['PATH_INFO']; $url_array=explode('/',$path); array_shift($url_array); while ($url_array) { $_GET[$url_array[0]] = $url_array[1]; array_shift($url_array); array_shift($url_array); } } 

Есть идеи?

/Тобиас

Если вы используете Apache, вам нужно посмотреть на mod_rewrite .

Используя mod_rewrite , вы можете изменить, как URL-адреса сопоставляются с фактическими конечными точками вашего приложения. Для вашего примера вам нужно что-то вроде этого:

 RewriteEngine on RewriteRule ^/?page/(.*)$ page.php/$1 [L] 

На этой странице есть и другие простые примеры.

Вероятно, вы настроили свой веб-сервер, чтобы php обрабатывал все запросы на файлы с расширением .php. Предположим, что это апач. Тогда есть что-то вроде

 AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml .phpt 

или

 <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> 

в одном из файлов конфигурации. Второй сообщает apache, что все файлы, соответствующие маске .php $, должны обрабатываться модулем / обработчиком, зарегистрированным для типа application / x-httpd-php (php).
Но вам не нужно ограничивать его .php-файлами. Вы можете использовать любую маску файла, которую хотите. Или другую директиву, например, <Directory> .
Если все файлы в определенном каталоге (и, возможно, его подкаталогах) являются php-скриптами, вы даже можете поместить файл .htaccess в этот каталог с помощью

 ForceType application/x-httpd-php 

и apache будет обрабатывать любой файл как скрипт php. ForceType отменяет все предыдущие настройки обработчика.

Под Apache поместите файл .htaccess в каталог, содержащий файл page.php.

Если файлы page.php содержатся в корневом каталоге (например, /page.php), просто добавьте это в свой .htaccess:

 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /page.php?/$1 [L] 

Если, однако, файлы page.php содержатся в let say say /a_folder/another_folder/page.php

Тогда вам нужно будет поместить это в ваш .htaccess:

 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /a_folder/another_folder/page.php?/$1 [L] 

И так далее.

Что это значит, он просто удаляет page.php из URL. Итак, в вашем случае:

Вместо: http://mydomain.com/page.php/foo/123/bar/456 Вы можете использовать: htp: //mydomain.com/foo/123/bar/456

Повеселись.

спасибо за все ответы, но если я использую mod_rewrite, то я буду делать новые правила (и многие) каждый раз, когда я создаю новую страницу. И их очень много 🙂

Возможно, если я перенаправляю все URL-адреса на свой index.php с помощью .htaccess, а затем исправляю свой URL-адрес, например wordpress:

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress