Помощь по сценарию, ссылка на файл из другой подпапки - PullRequest
0 голосов
/ 12 сентября 2011

Мне очень нужна помощь в этом, скрипт на PERL-CGI (полный рабочий скрипт приведен ниже).

Как добавить к этому корневую папку сервера (folder_f):

~ s / _e.shtml / _f.shtml /

Этот фрагмент кода ищет все вхождения _e.shtml и заменяет их на _f.shtml (он находится в той же папке).

Тем не менее, между этим я хотел бы иметь возможность добавить туда корневой каталог сервера папки "folder_f" или сделать что-то другое, если это необходимо.

Мой скрипт называется "change-language".pl "- которая имеет гиперссылку на него в" file_e.shtml ".При нажатии он попытается найти файл "file_f.shtml".

Например, что я хотел бы сделать:

~ s / _e.shtml / (FOLDER_F) _f.shtml / (найден в скрипте ниже, но я добавил (FOLDER_F).

Я пытался: $ call_page = ~ s / _e.shtml / 's / ^ / $. \ F«/_f.shtml/;

но это не сработало. Это приводит меня к тому же файлу _e.shtml.

Я был бы очень признателен за помощь в этом, так как я могу»Похоже, что это не так, с тем, что я знаю до сих пор.

Полный скрипт приведен ниже, который работает, но только если оба языковых файла (file_e.shtml и file_f.shtml) находятся в одной папке.необходимо, чтобы скрипт работал, чтобы он находил файл (file_f.shtml), но находился в другой подпапке в корневом каталоге сервера, называемой папкой «FOLDER_F».

в части $ call_page= ~ s / _e.shtml / _f.shtml /; скрипта, есть ли способ сделать это:

$ call_page = ~ s / _e.shtml (FOLDER_F) / _ f.shtml /; -FOLDER_F в круглых скобкахПрежде чем я хотел бы иметь возможность изменить сценарий так, чтобы он перешел в подпапку и получил file_f.shtml в подпапке FOLDER_F.

То, что у меня есть, следует за РАБОТАМИ, но работает только еслифайлы _e.shtml и _f.shtml находятся в одной папке:

#!/usr/bin/perl
#
#
# get the URL for the Web page that called this script
$calling_page = $ENV{'HTTP_REFERER'};


if($calling_page =~ /(.*)\#.*/) {

# # only take the first part up to the #
$calling_page = $1;}

# ignore any file that is not _e.shtml or _f.shtml and do nothing!

# is this an _e.shtml file?

if($calling_page =~ /_e\.shtml/) {
# replace the suffix

$calling_page =~ s/_e\.shtml/_f\.shtml/;

print "Location: $calling_page\n\n";

# then is this an _f.shtml file?

}

1 Ответ

1 голос
/ 12 сентября 2011

Если я правильно понял ваше описание, вы хотите вставить имя папки в URL-адрес, например:

http://domain.com/foo/bar.html -> http://domain.com/foo/folder_f/bar.html

Если это так, то вы можете сделать это с помощью этого регулярного выражения:

$calling_page =~ s!/([^/]*)$!/folder_f/$1!;
...