关于LimeSurvey的url设置,其实官方文档写得还是很清楚的。它所谓的短链就是伪静态(rewrite)规则,目的就是去除链接中的index.php?部分,让整体更好看些。

一、修改config.php

LimeSurvey的配置文件位于“/根目录/application/config”下,名为config.php。找到其中的urlManager部分,按照下列代码修改:

'urlManager' => array(
            'urlFormat' => 'path',
            'rules' => array(
                '<sid:\d+>' => array('survey/index','urlSuffix'=>'.html','matchValue'=>true),
            ),
            'showScriptName' => false,
        ),

其中rules部分是为了添加.html后缀,使得网页的链接变为xxx.html?lang=zh-Hans。

如果你使用的是nginx服务,那么找到配置文件并修改如下:

server {
    set $host_path "/PATH/TO/LIMESURVEY";
    server_name  YOUR.SERVER.FQDN;
    root /PATH/TO/LIMESURVEY;
    charset utf-8;
    try_files $uri $uri/ /index.php?r=$uri&$args;
    #不允许从脚本目录内部读取, see issue with debug > 1 on note
    location ~ ^/(application|protected|framework|themes/\w+/views) {
        deny  all;
    }
    #不允许从用户上传目录直接读取
    location ~ ^/upload/surveys/.*/fu_[a-z0-9]*$ {
        return 444;
    }
    #不允许上传可执行文件到上传目录
    location ~* /upload/.*\.(pl|cgi|py|pyc|pyo|phtml|sh|lua|php|php3|php4|php5|php6|pcgi|pcgi3|pcgi4|pcgi5|pcgi6|icn)$ {
        return 444;
    }
    #避免处理yii对不存在的静态文件的调用
    location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
        try_files $uri =404;
    }
    location ~ \.php$ {
        fastcgi_split_path_info  ^(.+\.php)(.*)$;
        try_files $uri index.php;
        fastcgi_pass   127.0.0.1:9000; # Change this to match your settings
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  SCRIPT_NAME      $fastcgi_script_name;
    }
}

说明:fastcgi_pass部分要根据自己的实际情况来设置。
重新加载配置文件,网站可以正常打开。
limesurvey-short_url.jpg
而且很有意思的是,一旦开始答题,?lang=zh-Hans的小尾巴就没有了。
limesurvey-short_url-2.jpg

参考文档:

  1. 常规问答
  2. LimeSurvey可选设置
  3. URL Management(网址管理)
最后修改:2022 年 11 月 29 日
如果觉得我的文章对你有用,请随意赞赏