Как мне получить ВЕСЬ URL, как видно в браузере без JS?
У меня есть приложение, которое я создаю в ColdFusion, посредством которого все запросы будут выполняться через файл index.cfm.
У меня есть файл.htaccess, который переписывает URL. Так, например... если я напишу:
http://domain.com/hello/goodbye/howdy
Фактический запрос всегда использует index.cfm так:
http://domain.com/index.cfm/hello/goodbye/howdy
Все это прекрасно работает, но теперь я застрял в том, как я могу получить все, что в URL. Похоже, что ни одна из переменных CGI не выводит часть URL "/ hello / goodbye / howdy".
Я пробовал cgi.path_info, cgi.query_string и т. Д. Безрезультатно... они просто пустые.
Мне нужно захватить все, что идет после доменного имени, и делать что-то в CF с ним. Я знаю, что это возможно в JS, но мне действительно нужно это на сервере.
Сброс объема CGI не показывает мне ничего полезного в этом отношении:
<cfdump var="#cgi#" />
Вот мой файл htaccess для справки:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.cfm$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.cfm [L]
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} !^([^\.]+)\.domain\.com
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
Благодарю.
РЕДАКТИРОВАТЬ:
В качестве дополнительного примечания я также попробовал основные методы Java, например, так:
<cfdump var="#getPageContext().getRequest().getContextPath()#" />
<cfdump var="#getPageContext().getRequest().getRequestURL()#" />
<cfdump var="#getPageContext().getRequest().getQueryString()#" />
Безуспешно:(
4 ответа
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.cfm$ - [L]
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} !^([^\.]+)\.domain\.com
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
#Change exists here:
RewriteRule ^(.*)$ /index.cfm?actualuri=$1 [L,QSA]
</IfModule>
пытаться cgi.query_string
сейчас. Должно иметь actualuri=/the/path/sent
,
Кроме того, поместите правила перезаписи в том же порядке, что и выше.
Проверьте #CGI.REQUEST_URI# - это недокументировано, но работает
Я надеюсь, что это то, что вы ищете.
<cfset link = "http://" & GetHttpRequestData().headers['host'] & GetHttpRequestData().headers['X-REWRITE-URL'] >
Я думаю, что самый простой способ - это посмотреть на CGI.PATH_INFO
поле.