tilda ~用户文件夹的apache rewriterule

apache rewriterule for tilda ~user folder

我试图让 domain.com/~userX 文件夹在不使用 userdir 的情况下工作。

当 ~userX 文件夹位于服务器 doc 根 doc 文件夹中时,它工作正常,但有太多需要将它们放在子文件夹中,即 /homepages 所以我得到的最好的是在 .htaccess 中:

<IfModule mod_rewrite.c> 
RewriteEngine On
RewriteBase /

RewriteRule ^~ "/homepages/%{REQUEST_URI}"

</IfModule>
Options -Indexes 

使用尾部斜杠可以正常工作: domain.com/~userX/

如果没有尾部斜杠,它会自动重定向到: http://ddomain.com/homepages/~userX/

我不想要,所以我想我会关闭目录斜线:

 <Directory /var/www/domain/public_html>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
                DirectorySlash Off
        </Directory>

尾部斜杠仍然有效,但没有尾部斜杠我现在得到:

Forbidden
You don't have permission to access this resource.

错误日志:

无法提供目录 /var/www/domain/public_html/homepages/~userX

这让我头疼,我已经搜索了几天,我真的被困住了:/

非常感谢任何帮助。

第一种方法:

尝试:

RewriteRule ^(~[^\/]+)(?:\/(.*)|$) /homepages// [L]

尾部斜杠是否存在,它在内部使用尾部斜杠重定向。

问题:

  1. 我认为,如果用户在/homepage 目录的sub-directory 中输入带斜线的URL,它可能无法正常工作。

第二种方法:

尝试:

RewriteRule ^(~[^\/]+)$ // [R=302,L]

RewriteRule ^~ /homepages/%{REQUEST_URI} [L]

第三种方法:

这可能比第一个和第二个解决方案更有效

RewriteRule ^(~[^\/]+)(?:\/(.*)|$) /homepages// [PT,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^\/])$ // [L]