问题2:为什么这个配置代码在.htaccess中不起作用?

问题2:为什么这个配置代码在.htaccess中不起作用?,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我将使用什么来代替.htaccess中的文档\u Root 下面是我的linux服务器的htttp.conf RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.php -f RewriteRule ^/(.*)(/?)$ /$1.php [L] RewriteRule ^/([a-zA-Z]+)([a-zA-Z0-9_]{3,15})(/?)$ /profile.php?fairid=$1$2 [L] RewriteRule ^/([a-zA-Z]+

我将使用什么来代替.htaccess中的文档\u Root

下面是我的linux服务器的htttp.conf

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.php -f
RewriteRule ^/(.*)(/?)$ /$1.php [L]
RewriteRule ^/([a-zA-Z]+)([a-zA-Z0-9_]{3,15})(/?)$ /profile.php?fairid=$1$2 [L]
RewriteRule ^/([a-zA-Z]+)([a-zA-Z0-9_]{3,15})/([a-z]*)(/?)$ /$3.php?fairid=$1$2 [L]
但现在我将我的域转移到共享服务器。那么,为了正确运行我的站点,重写规则中的.htaccess需要做哪些更改

我的.htaccess如下所示:

RewriteEngine On
RewriteBase /~laborfa2
RewriteCond %/~laborfa2/lf/main/com/%{REQUEST_FILENAME}.php -f
RewriteRule /(.*)(/?)$ /~laborfa2/lf/main/com/$1.php [L]
RewriteRule ^/([a-zA-Z]+)([a-zA-Z0-9_]{3,15})(/?)$ /~laborfa2/lf/main/com/profile.php?fairid=$1$2 [L]

但它不起作用。请建议在.htaccess中进行更改。

请求\u文件名
已经是绝对文件系统路径,并且前缀
文档\u根
错误

此外,当在.htaccess文件中使用mod_rewrite时,Apache会在测试规则之前从请求的URI路径中去掉每个目录路径前缀。对于web服务器的文档根目录中的.htaccess文件,它是被剥离的前导
/
。因此,您的模式不能像服务器或虚拟主机配置中那样以斜杠开头

所以试试这个:

RewriteBase /~laborfa2/
RewriteCond %{DOCUMENT_ROOT}~laborfa2/lf/main/com/$1.php -f
RewriteRule (.*)(/?)$ /lf/main/com/$1.php [L]
RewriteRule ^([a-zA-Z]+[a-zA-Z0-9_]{3,15})(/?)$ /lf/main/com/profile.php?fairid=$1 [L]