我将使用什么代替.htaccess中的Document_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中需要进行更改。
答案 0 :(得分:1)
REQUEST_FILENAME
已经是绝对文件系统路径,前置DOCUMENT_ROOT
是错误的。
此外,在.htaccess文件中使用mod_rewrite时,Apache会在测试规则之前从请求的URI路径中删除每个目录的路径前缀。如果.htaccess文件位于Web服务器的文档根目录中,则它是被剥离的前导/
。因此,您的模式不能以服务器或虚拟主机配置中的前导斜杠开头。
所以试试这个:
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]