怎样为XenForo设置伪静态

2022年9月9日 | 分类: 【技术】

参考:https://xfnull.com/threads/296/

根据XenForo提供的伪静态htaccess.txt中的伪静态规则,如果你要隐藏/index.php?地址,这样访问的地址就会直接隐藏/index.php?地址,如:https://yourdomain.com/index.php?whats-new/ 变为 https://yourdomain.com/whats-new/

需要在后台设置:
设置>选项>基本信息
选择使用最佳URLs。

Nginx伪静态:

由于Nginx伪静态配置文件语法与Apache不同,以宝塔面板为例,该文件位于/www/server/panel/vhost/rewrite/yourdomain.com.conf;,宝塔面板自带伪静态配置功能。Nginx自带伪静态功能,无需重启。

内容如下:

location / {
    if (!-e $request_filename){
        rewrite ^(.*)$ /index.php?s=$1 last; break;
    }
}
location ~ ^/(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt)/ {
deny all;
return 404;
}

其中return 404;为404错误代码,返回404错误页面,该页面根据Nginx的网站配置开启error_page 404 /404.html;,当然也可返回其他错误代码。
另外data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt是禁止访问目录及文件,用竖线|分割。
注意: data/|js/|styles/|install/目录加上斜线/表示禁止访问目录,不加斜线/表示禁止访问目录中的文件,这会造成网站一些文件无法加载。

强制 http 跳转 https:

参考:https://mrlee.blog.csdn.net/article/details/104949176

server {
    listen 80;
    server_name domain.com;
    rewrite ^(.*) https://$server_name$1 permanent;
}
server {
    listen 443 ssl;
    server_name domain.com;
    ssl on;
    ssl_certificate     /etc/nginx/ssl/domain.com.crt;
    ssl_certificate_key /etc/nginx/ssl/domain.com.crt;
    # other
}

Apache伪静态:

默认为 XenForo 根目录下的htaccess.txt文件中的内容,一般网站根目录直接存在Apache的.htaccess伪静态文件。Apache开启伪静态需要开启LoadModule rewrite_module modules/mod_rewrite.so 模块,然后重启Apache生效。

内容如:

#    Mod_security can interfere with uploading of content such as attachments. If you
#    cannot attach files, remove the "#" from the lines below.
#<IfModule mod_security.c>
#    SecFilterEngine Off
#    SecFilterScanPOST Off
#</IfModule>

ErrorDocument 401 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 405 default
ErrorDocument 406 default
ErrorDocument 500 default
ErrorDocument 501 default
ErrorDocument 503 default

<IfModule mod_rewrite.c>
    RewriteEngine On

    #    If you are having problems with the rewrite rules, remove the "#" from the
    #    line that begins "RewriteBase" below. You will also have to change the path
    #    of the rewrite to reflect the path to your XenForo installation.
    #RewriteBase /xenforo

    #    This line may be needed to workaround HTTP Basic auth issues when using PHP as a CGI.
    #RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
</IfModule>