Запустить PHP-код из .htaccess?

Скажем, у меня есть переписывание, которое должно передать URL-адрес функции PHP и получить значение, чтобы определить, каким должно быть новое место назначения? Есть ли способ сделать это?

Благодарю.

ОБНОВИТЬ:

Спасибо, ребята. У меня все еще есть проблемы, но я покажу вам свой код:

.htaccess

#I got the file path by echoing DOCUMENT_ROOT and added the rest. RewriteMap fixurl prg:/var/www/vhosts/mydomain.com/httpsdocs/domain_prototype/code_base/url_handler.php RewriteEngine On RewriteRule (.*) ${fixurl:$1} [PT] 

PHP:

 set_time_limit(0); # forever program! $keyboard = fopen("php://stdin","r"); while (1) { $line = trim(fgets($keyboard)); print "www.google.com\n"; # <-- just test to see if working. } 

Однако я получаю 500 внутренних ошибок сервера. Я не уверен, есть ли ошибка в моем .htaccess или на моем PHP?

Есть что-то, называемое RewriteMap.

Вы можете вызвать исполняемый скрипт, который вернет URL для перезаписи.

Ознакомьтесь с этой статьей для получения дополнительной информации и примеров (в Perl, но они полностью применимы к любому другому языку):

http://www.onlamp.com/pub/a/apache/2005/04/28/apacheckbk.html

Резюме оговорок:

  • Должен запускать прочитанный цикл STDIN (т. Е. Не выходить после получения URL-адреса)
  • Должен напечатать URL-адрес, чтобы переписать его с помощью завершающей строки новой строки
  • Должен быть читабельным и исполняемым пользователем Apache работает как

Это способ создания карты

 RewriteMap fixurl prg:/usr/local/scripts/fixit.php 

И теперь мы можем использовать его в RewriteRule:

 RewriteEngine On RewriteRule (.*) ${fixurl:$1} 

EDIT: О внутренней ошибке сервера. Наиболее вероятная причина в том, что упоминает Gumbo, RewriteMap, к сожалению, нельзя использовать в .htaccess. Вы можете использовать его в RewriteRule в .htaccess, но можете создавать его только в конфигурации сервера или конфигурации виртуального хоста. Чтобы убедиться, проверьте журнал ошибок.

Таким образом, единственным решением для PHP / .htaccess было бы переписать все на определенную программу PHP, которая выполняет проверку и перенаправление с использованием заголовка Location. Что-то вроде:

 RewriteRule (.*) proxy.php?args=$1 [QSA] 

Затем в proxy.php

 <?php $url = get_proper_destination($QUERY_STRING); #args will have the URI path, #and, via QSA you will have #the original query string header("Location: $url"); ?> 

Да; вам нужна RewriteMap , из разновидности программ внешней перезаписи.

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

 header("Location: new-page.php"); 

Если вы не хотите, чтобы он перенаправлялся, вы также могли бы включить включение нужной вам страницы. Я считаю, что это немного более гибко, чем использование RewriteMap.

Надеюсь это поможет!

Обратите внимание RewriteMap директива RewriteMap может использоваться только в конфигурации сервера или виртуального хоста .