.htaccess在本地工作,但不在1and1服务器上工作

时间:2013-07-06 03:11:13

标签: apache .htaccess mod-rewrite rewrite

我将当前的.htaccess文件上传到1and1服务器(实际上是1und1.de,但我猜它是一样的)我正在调整500内部服务器错误。

Options -MultiViews 
RewriteEngine On
RewriteBase /lammkontor

RewriteRule ^categories/([^/\.]+)/?$ index.php?url=category.php&cat_url=$1 [L]
RewriteRule ^categories/([^/\.]+)/([^/\.]+)/?$ index.php?url=product.php&cat_url=$1&prod_url=$2 [L]
RewriteRule ^categories/([^/\.]+)/([^/\.]+)/recipes?$ index.php?url=recipes.php&cat_url=$1&prod_url=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+\.php)/?$ index.php?url=$1 [QSA]

这个.htaccess在我当地的MAMP服务器上完美运行。

当我用一个示例文件测试控制中心的CGI-Monitor时,我得到了 - cgi: File not present or has invalid modes (no output)

现在唯一正在使用的文件是index.php

感谢您的帮助!

3 个答案:

答案 0 :(得分:12)

实际上我解决了我在每个重写规则的开头添加斜杠的问题,例如:

RewriteRule ^(.+\.php)/?$ /index.php?url=$1 [QSA]

而不是

RewriteRule ^(.+\.php)/?$ index.php?url=$1 [QSA]

谢谢!

答案 1 :(得分:1)

默认情况下,apache的htaccess权限已关闭或受限制,具体取决于您的主机。 我怀疑是你的Options -MultiViews导致错误。

检查您的httpd.conf并检查是否允许MultiViews,如下所示。

<Directory />
  Options FollowSymLinks
  AllowOverride Indexes Options=All,MultiViews
  Order deny,allow
  Deny from all
</Directory>

答案 2 :(得分:0)

只需在网址前加一个斜线即可。例如,规则末尾的 /index.php 而不是 index.php