Вопрос по php, http – Чистые URL с помощью PHP

0

Поэтому я пытаюсь построить чистую систему URL в PHP, чтобы изменить URL-адреса, как этоhttp://example.com/index.php?projects=05 чтобы:http://example.com/projects/05

Пока я разобрался, как пользоватьсяparse_url отобразить URL, которые выглядят какhttp://example.com/index.php/projects/05 но я не могу понять, как удалить "index.php" с URL. Есть ли способ использовать .htaccess для удаленияindex.php из строки URL?

Я знаю, что это довольно простая проблема, но после интенсивного поиска я не могу найти решение.

Ваш Ответ

6   ответов
0

Концепция отделения фактических файлов / папок от URL называетсяrouting, Многие PHP-фреймворки включают в себя такую функциональностьmod_rewrite, Есть хорошая запись в блоге наPHP URL Routing это реализует простой автономный класс маршрутизатора.

Это создает отображение следующим образом:

mysite.com/projects/show/1 --> Projects::show(1)

Таким образом, запрошенный URL приводит к функцииshow() классаProjects вызывается с параметром1.

Вы можете использовать это для создания гибких сопоставлений красивых URL-адресов с вашим PHP-кодом.

0

Я использую следующий файл .htaccess для удаления части index.php из URL.

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !favicon.ico$

RewriteRule .* index.php/$0 [PT]

В противном случае я могу порекомендовать платформу Kohana в качестве эталона (у них также есть довольно приятный парсер URL и система контроллеров)

0

Вы должны использовать mod rewrite в .htaccess для превращения /index.php в /.

1

Вам нужно будет сделать это в Apache, используя mod_rewrite. Вам нужно будет перенаправить все URL-адреса в ваш index.php, а затем, возможно, с помощью parse_url, выяснить, что с ними делать.

Например:

# Turn on the rewrite engine
RewriteEngine On

# Only redirect if the request is not for index.php
RewriteCond %{REQUEST_URI} !^/index\.php

# and the request is not for an actual file
RewriteCond %{REQUEST_FILENAME} !-f

# or an actual folder
RewriteCond %{REQUEST_FILENAME} !-d

# finally, rewrite (not redirect) to index.php
RewriteRule .* index.php [L]
Error: User Rate Limit Exceeded Thomas
0

На самом деле вам не нужен php для этого, если вы можете создавать файлы .htaccess. Посмотрите наhttp://corz.org/serv/tricks/htaccess2.php

0

Примерно так в вашем .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

(Убедитесь, что модуль перезаписи включен)

Похожие вопросы