ЧПУ и PHP
чудеса.
Напишите в .htaccess:
#Включить модуль:
RewriteEngine On
#Базовый путь:
RewriteBase /
#Существующие файлы и папки:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#Обработка путей:
RewriteRule .* index.php
и в index.php используйте $_SERVER['REQUEST_URI'] и preg_split("/(\/|\..*$)/",$uri,PREGSPLIT_NO_EMPTY);
или
RewriteRule (.+)/(.+) index.php?a=$2&b=$1
где $1 - это первое условие в скобках, передающаяся на переменную $_GET['b'] для каждого запроса.
Читайте документацию, благо, что ее полно:
http://httpd.apache.org/docs/mod/mod_rewrite.html - Module mod_rewrite URL Rewriting Engine
http://www.engelschall.com/pw/apache/rewriteguide - A Users Guide to URL Rewriting with the Apache Webserver
http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html - Модуль Apache mod_rewrite
http://sitemaker.ru/technologies/webserver/mod_rewrite - Mod_rewrite для чайников
[+]: Очень мощный способ.
[-]: Может не хватить мозгов.
На хостинге может быть не установлен этот модуль.
Способ[4]:
Основан на директиве FilesMatch, которая в Апаче является core feature.
Все просто.
Пишем опять же в .htaccess:
Action throw /index.php
<FilesMatch "^([^.]+)$">
ForceType throw
</FilesMatch>
<FilesMatch index.php>
ForceType application/x-httpd-php
</FilesMatch>
После этого все УРЛы, которые подпадают под условие "^([^.]+)$",
(то есть все урлы, в которых не содержится точка) будут передаваться на index.php.
Вы можете написать свое условие, разумеется.
[+]: Простой и удобный способ.
[-]: Для того, чтобы ForceType работал, php должен быть подключен к апачу в виде модуля.
Если php вызывается,
как обыкновенный CGI - ForceType работать не будет.
(c) 14.09.2003 http://spectator.ru/tehnology/php/user_friendly_urls
Напишите в .htaccess:
#Включить модуль:
RewriteEngine On
#Базовый путь:
RewriteBase /
#Существующие файлы и папки:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#Обработка путей:
RewriteRule .* index.php
и в index.php используйте $_SERVER['REQUEST_URI'] и preg_split("/(\/|\..*$)/",$uri,PREGSPLIT_NO_EMPTY);
или
RewriteRule (.+)/(.+) index.php?a=$2&b=$1
где $1 - это первое условие в скобках, передающаяся на переменную $_GET['b'] для каждого запроса.
Читайте документацию, благо, что ее полно:
http://httpd.apache.org/docs/mod/mod_rewrite.html - Module mod_rewrite URL Rewriting Engine
http://www.engelschall.com/pw/apache/rewriteguide - A Users Guide to URL Rewriting with the Apache Webserver
http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html - Модуль Apache mod_rewrite
http://sitemaker.ru/technologies/webserver/mod_rewrite - Mod_rewrite для чайников
[+]: Очень мощный способ.
[-]: Может не хватить мозгов.
На хостинге может быть не установлен этот модуль.
Способ[4]:
Основан на директиве FilesMatch, которая в Апаче является core feature.
Все просто.
Пишем опять же в .htaccess:
Action throw /index.php
<FilesMatch "^([^.]+)$">
ForceType throw
</FilesMatch>
<FilesMatch index.php>
ForceType application/x-httpd-php
</FilesMatch>
После этого все УРЛы, которые подпадают под условие "^([^.]+)$",
(то есть все урлы, в которых не содержится точка) будут передаваться на index.php.
Вы можете написать свое условие, разумеется.
[+]: Простой и удобный способ.
[-]: Для того, чтобы ForceType работал, php должен быть подключен к апачу в виде модуля.
Если php вызывается,
как обыкновенный CGI - ForceType работать не будет.
(c) 14.09.2003 http://spectator.ru/tehnology/php/user_friendly_urls