is a global variable that is assigned the name of the calling script ( as you would have guessed ;-) ) in the InitRequest
function. It's used in a few places to build URLs that are used in links etc.
A typical URL to a Wiki is http://www.example.com/cgi-bin/wiki.pl, and in that case $ScriptName is assigned the value 'wiki.pl'.
I for one prefer short URLs, and it isn't exactly a natural law that the script name appears in the URL. Applied to the above example URL, and assuming Apache, I can put an .htaccess
file in the document root with this directive:
DirectoryIndex cgi-bin/wiki.pl index.html
Doing so will allow me to run the script through the URL http://www.example.com/
However, all the generated links will point to http://www.example.com/wiki.pl?[something
] , and if I click such a link, the server will tell me that the "URL /wiki.pl was not found on this server" or the like.
If the assignment of $ScriptName
is made conditional, i.e. if this line (line 428 in version 1.0.4):
$ScriptName = pop(@ScriptPath);
is exchanged for
$ScriptName ||= pop(@ScriptPath);
I can simply say
$ScriptName = '/';
in the config file (or in a wrapper script), and the shorter URL http://www.example.com/
will work just fine.
Another thing is that the variable name then ought to be $ScriptURL rather than $ScriptName... --GunnarH
I vaguely remember to ran into something similar when adopting usemod (or maybe oddmuse) to work with url rewrite a few years ago. Your entry in .htaccess looks a bit strange to me. -- MarkusLude