2012-05-25 2 views
0

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

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

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

ответ

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] 
+0

У меня возникли проблемы с поиском способа автоматической переадресации с использованием .htaccess - можете ли вы привести пример? – Thomas

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

что-то подобное в вашем файле .htaccess:

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

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

0

Вы должны использовать мод рерайт в .htaccess для токарной /index.php к /.

0

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

Это создает отображение, как это:

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

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

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