【问题标题】:Q2:Why does this config code not work in .htaccess?Q2:为什么这个配置代码在 .htaccess 中不起作用?
【发布时间】:2009-11-26 23:40:01
【问题描述】:

我将在 .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 中需要进行更改。

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    REQUEST_FILENAME 已经是一个绝对文件系统路径,并且在前面加上 DOCUMENT_ROOT 是错误的。

    此外,当在 .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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      • 2012-02-22
      • 2023-03-03
      • 2017-10-02
      • 2016-07-10
      • 2010-12-14
      相关资源
      最近更新 更多