2013-07-10 62 views
0

下面给出的的.htaccess代码获取内部错误500内部服务器错误的.htaccess

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} !^([w]{3,3}[.]{1,1}){0,1}example.com$ 
RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]*)[.]example.com$ 
RewriteRule ^$ portfolio/index.php?id=%1 [NC,L] 

AuthType Basic 
AuthName "If your not authenticated , then go seat in corner" 
AuthUserFile /var/www/devRoot/.htpasswd 
Require valid-user 

但如果我只用

AuthType Basic 
AuthName "If your not authenticated , then go seat in corner" 
AuthUserFile /var/www/devRoot/.htpasswd 
Require valid-user 

上面的代码工作完美。

问题是我不明白为什么第一个代码不工作。

日志:

[Wed Jul 10 13:12:11 2013] [alert] [client 1.23.112.242] /var/www/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configur        ation 
[Wed Jul 10 13:12:12 2013] [alert] [client 1.23.112.242] /var/www/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configur        ation 

解决:

Did you ensure the RewriteEngine is on? 

You'll want to verify that the mod is enabled - just look for rewrite.load symlink in /etc/apache2/mods-enabled. If not, run sudo a2enmod rewrite to enable it. Restart apache using sudo service apache2 restart and provided your .htaccess syntax is correct this will work. 

Otherwise you will need to paste more information about your .htaccess file. 
+0

开始接通调试日志记录。然后考虑superuser.com .. –

+0

如何打开调试 – user2568637

回答

0

你还没有启用重写引擎,取消对该行在httpd.conf

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so 

您可能必须在/ etc/apache2/mods-available在这种情况下,只需将其复制到mods-enabled并重启

这是假设Linux?

窗口你找

LoadModule rewrite_module modules/mod_rewrite.so 
+0

你确定RewriteEngine是否打开? 您需要验证mod是否已启用 - 只需在/ etc/apache2/mods-enabled中查找rewrite.load符号链接即可。如果没有,运行sudo a2enmod rewrite启用它。使用sudo service apache2 restart重新启动apache,并提供.htaccess语法是正确的,这将起作用。 否则,您需要粘贴更多关于.htaccess文件的信息。 – user2568637