HTACCESS在规范修复中导致500服务器错误

时间:2013-12-19 22:00:20

标签: .htaccess mod-rewrite

我似乎有规范问题 - 重复我的网站的索引页面显然让谷歌感到困惑。

所以我以为我会尝试.htaccess路线,我被建议使用以下代码

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^alexgreen.co.uk
RewriteRule (.*) http://www.alexgreen.co.uk/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.htm HTTP/
RewriteRule ^index.html$ http://www.alexgreen.co.uk/ [R=301,L]

但我得到的是以下信息:

“内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请与服务器管理员联系,告知他们错误发生的时间以及可能导致错误的任何操作。

服务器错误日志中可能提供了有关此错误的更多信息。

此外,尝试使用ErrorDocument处理请求时遇到500内部服务器错误错误。“

我可以尝试使用错误类型的服务器吗?它是一个基于linux的服务器托管1and1(我认为)但它确实允许php,mysql,perl。

有没有人有任何想法,或者我应该尝试以不同的方式做事?

提前致谢..

2 个答案:

答案 0 :(得分:1)

这一行:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.htm HTTP/

需要将所有空格转义,否则mod_rewrite会认为^[A-Z]{3,9} /index.htmHTTP/都是不同的参数:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index.htm\ HTTP/

答案 1 :(得分:0)

这是我经常使用的脚本

RewriteRule On +FollowSymLinks

#add www
RewriteCond %{HTTP_HOST} ^(alexgreen\.co\.uk)(:80)? [NC]
RewriteRule ^(.*)$ http://www.alexgreen.co.uk/$1 [R=301,L]

# Hide index.php
RewriteCond %{THE_REQUEST} \/index.html\ HTTP [NC]
RewriteRule (.*)index.html$ /$1 [R=301,L]

idk如果你想要index.html或index.htm,因为这也会导致问题没有指明要使用哪个。在你的脚本中你使用了两者。