我将当前的.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
感谢您的帮助!
答案 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