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

时间:2009-05-25 11:14:23

标签: apache .htaccess mod-rewrite

<VirtualHost *:80>
   DocumentRoot /lf/main/com 
   ServerName 74.220.215.241/~laborfa2 
   ServerAlias 74.220.215.241/~laborfa2 
   RewriteEngine on 
   #RewriteLogLevel 2 
   #RewriteLog logs/rewrite.log 
   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]     

 </VirtualHost> 

它在linux(htt.vhost)上工作正常但是当我将其粘贴到.htaccess中时不起作用。

那么我需要做些什么才能让它发挥作用呢?

5 个答案:

答案 0 :(得分:2)

天儿真好,

如上所述,VirtualHost指令的上下文明确排除了它在.htaccess文件中的使用:

从Apache 2.2手册:

  

server config ...表示该指令可以在服务器配置文件(例如httpd.conf)中使用,但不能在任何容器或容器中使用。在.htaccess文件中根本不允许这样做。

HTH

欢呼声,

答案 1 :(得分:0)

您无法在RewriteLog中使用.htaccess file指令。请参阅mod_rewrite documentation。遇到此类问题时,您还应该查看错误日志。

答案 2 :(得分:0)

您无法在虚拟主机内设置虚拟主机。

答案 3 :(得分:0)

您正在使用的<VirtualHost>块只能在 httpd.conf 文件(主服务器配置)中配置,并且无法在 .htaccess 内部使用

您可以尝试在httpd.conf中移动VirtualHost,只需在.htaccess文件中提供RewriteCond和RewriteRule

答案 4 :(得分:0)

ServerName指令应包含服务器名称而不是URL。将其设置为值www.example.com:80是有效的,但www.example.com/~example不是。请参阅Apache mod_core文档。

除此之外,即使条目已被注释掉,也不能在.htaccess文件中使用RewriteLog指令。请参阅Apache mod_rewrite文档。