У меня есть PHP файл /var/www/somepath/index.php
, который обрабатывает запросыHtaccess внутренний переписан для URL с запросом Params
http://example.com/somepath/?q=query
Я хотел бы один и тот же файл для обработки запросов к
http://example.com/some/other/path/?q=query
http://example.com/another/path/?q=query
http://example.com/yet/another/path/?q=query
Я не хочу для копирования файла php в несколько мест в файловой системе. Я думал, что использование правил внутренней перезаписи было бы лучшим способом сделать это. Вот то, что я ставлю в топ-уровня .htaccess
файл /var/www/.htaccess
:
RewriteRule ^some/other/path /somepath/%{QUERY_STRING} [PT]
Но это не работает. Я получаю 404 для http://example.com/some/other/path/?q=query
Я знаю, что mod_rewrite включен, потому что у меня есть внешние правила перезаписи (301 и 302 переадресации) в тех же файлах .htaccess, и они работают.
Спасибо анубхава. Если пользователь просматривает страницу http://example.com/some/other/path/?q=query, что делает «часть/другой/путь» частью URL-адреса, исчезают? Мы не соответствовали ему как часть правила перезаписи, поэтому он остается в URL-адресе? Или старый URL-адрес полностью уничтожен? Если это так, не будет ли стерта также строка запроса? – George
Это внутренняя переписка, информация не теряется. Если вы проверите '$ _SERVER [" REQUEST_URI "]' он покажет '/ some/other/path /? Q = query',' $ _SERVER ["QUERY_STRING"] 'будет показывать' q = запрос' и, наконец, если вы проверите '$ _SERVER [" SCRIPT_NAME "]' он покажет переписанный путь, т. Е. '/ Somepath/index.php' – anubhava