Как отобразить абсолютный путь URI из "/xxx/some.file" в "/something/xxx/some.file" с помощью .htaccesss - PullRequest
0 голосов
/ 20 октября 2011

спасибо за вашу помощь; Я новичок во всем этом сопоставлении URL, однако считаю, что это простая проблема ...

Я перевожу приложение ColdFusion из GoDaddy (который недавно отказался от поддержки ColdFusion) в CFDynamics .

У меня есть URL для моего нового корня: cfd123.cfdynamics.com/lbc, это мой каталог wwwroot, куда я поместил сайт. (Это на самом деле: D: \ Inetpub \ wwwroot \ lbc.com \ wwwroot, но я не думаю, что это имеет значение)

Проблема в том, что все HTML-идентификаторы URI: href и src и т. Д. На сайте были написаны с использованием абсолютных путей: "/images/some.jpg" и т. Д., И теперь я хочу, чтобы они отображались на "cfd123. cfdynamics.com/lbc/images/some.jpg".

Я полагаю, мне нужно сопоставить "/ что-то" с "/ lbc / что-то" везде, где на него ссылаются. Кажется, это должно быть просто, просто сопоставьте ведущий "/" с "/ lbc /", и я готов идти.

Итак, я решил создать листинг типа «Alias ​​/ / lbc /» и поместил его в мой файл .htaccess. Теперь я обнаружил, что Alias ​​не допускается в .htaccess. (Я думаю, что если бы у меня был доступ к httpd.conf, я мог бы использовать там псевдоним, но это среда общего хостинга, и у меня нет такого доступа.)

Итак, я решил попробовать переписать правила (все еще в файле .htaccess):

RewriteEngine on
RewriteBase /lbc
RewriteRule ^/(.*)$ /$1 [L,R=301]

Безрезультатно. Таким образом, я не нахожу, что какие-то очевидные вещи работают (и я даже не уверен, что сделал их правильно). Я не вижу никаких механизмов отладки, которые бы мне что-то показывали (chrome просто показывает мне 404 ошибки, которые можно ожидать, если файл не найден.)

И это все для меня в новинку, и оно становится довольно волосатым довольно быстро. Кто-нибудь может указать мне правильное направление?

Спасибо, Стив

p.s. Я могу позаботиться о директивах ColdFusion CFInclude, создав файл Application.cfc в каталоге wwwroot, содержащий приведенный ниже код, но он ничего не делает для различных ссылок HTML по всей странице.

<cfset this.name = "AbsoluteReference"/>
<cfset this.mappings = structNew() />
<cfset this.mappings["/"] = getDirectoryFromPath(getCurrentTemplatePath())/> 

1 Ответ

0 голосов
/ 20 октября 2011

Ваш сервер Windows работает на CFDynamics, я могу сказать из этого

У меня есть URL для моего нового корня: cfd123.cfdynamics.com/lbc, это мой каталог wwwroot, куда я поместил сайт. (Это на самом деле: D: \ Inetpub \ wwwroot \ lbc.com \ wwwroot , но я не думаю, что это имеет значение)

Это структура Windows "D: \ Inetpub \ wwwroot \ lbc.com \ wwwroot", поэтому .htaccess не будет работать для перезаписи URL, так как в общей среде вы не сможете делать то, что вам нужно. Эти изменения должны быть сделаны в IIS, и это не вариант. Если у вас есть Dreamweaver, вы можете выполнить массовый поиск и заменить / images / и заменить на / ibc / images /, а для ссылки выполните href = "/ replace на href =" / ibc /.

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

...