Если на сервере нет мода переписать - PullRequest
1 голос
/ 02 сентября 2011

У меня вопрос по поводу mod_rewrite. Я знаю, что в htaccess я могу сделать <IfModule>, но как насчет PHP? В HTML я пишу мои ссылки, как projects/24, который на самом деле action=projects&id=24. Если сервер, на котором кто-то устанавливает это приложение, не имеет mod_rewrite, как в PHP я могу изменить ссылки только на GET vars?

Ответы [ 4 ]

3 голосов
/ 02 сентября 2011

использовать apache_get_modules ()

Edit: Я не уверен, какой гандикап проголосовал против правильного ответа, но он, очевидно, не может rtm.

Вот код для иллюстрации:

<?php

if (in_array("mod_rewrite", apache_get_modules())) {
   echo 'has rewrite';
} else {
   echo 'no rewrite';
}

?>

Используйте это, чтобы решить, какую ссылку вы хотите написать.

0 голосов
/ 02 сентября 2011

Есть обходные пути, использующие ErrorDocument и обрабатывающие неудачные запросы в пользовательском пространстве (= скрипт php).Но это (1) загрязнит журнал и (2) не будет работать с запросами POST (в зависимости от сервера).Не стоит беспокоиться об этом.

Практическая альтернатива - использовать PATH_INFO для чистых URL в сочетании с одним или несколькими корневыми сценариями.Вам нужно будет использовать его, например, с +MultiViews или SetHandler или DefaultType и ForceType (которые можно использовать для установки расширения без php-скрипта). [1]
Но часто это тоже запрещенные директивы, если даже не включен mod_rewrite.

[1] Не забывайте раздел FilesMatch, чтобы ограничить эффектили снова отключите его в подкаталогах.

0 голосов
/ 02 сентября 2011

Я точно не знаю, чем вы собираетесь закончить, но это может подтолкнуть вас в правильном направлении:

http://www.tutorio.com/tutorial/php-alternative-to-mod-rewrite-for-se-friendly-urls

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

0 голосов
/ 02 сентября 2011

как в PHP я могу изменить ссылки на просто GET vars?

Просто создайте все свои ссылки, используя переменные.
И выберите их внешний вид, основываясь на некоторых настройках конфигурациикак Wordpress делает.

...