Я использую файл custom.conf для переписывания и codeigniter для некоторых функций сайта, в основном для статей.
Мой исходный URL переписывается, поэтому у меня есть http://example.com/article-a101,, при этом файл custom.conf используется для перезаписи на codeigniter / article / read / 101. Я думаю, что я должен отправить это как вызов через прокси-сервер, используя флаг [P] в mod_rewrite, чтобы он снова перезаписывался в файле codeigniters .htaccess. Как только он попадает в воспламенитель кода .htaccess, он использует эту структуру перезаписи мода для вызова индексного файла и использует контроллер статьи и функцию чтения, отправляемую в 101 в качестве параметра.
Я пытаюсь понять, как мне получить исходный URL в адресной строке, а не переменную $ _SERVER. Поскольку я использую [P] при первом переписывании, request_uri имеет codeigniter / article / read / 101.
custom.conf
RewriteRule ^/([_a-zA-Z0-9-]+)-a([0-9]+)$ /codeigniter/article/read/$2 [P,L]
codeigniters .htaccess, fairly basic
RewriteRule ^(.*)$ index.php?/$1 [L]
Вот мое текущее решение, которое, как я знаю, должно быть лучше для
.
RewriteRule ^/([_a-zA-Z0-9-]+)-a([0-9]+)$ /codeigniter/article/read/$2?orig_url=%{REQUEST_URI}&%{QUERY_STRING} [P,L]
Это скрыто от пользователя, и я могу получить доступ к исходному URL через строку запроса, но это не выглядит элегантным решением.