Я мог бы здесь помочь. Я использую это, чтобы исправить свой 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