可能的.htaccess错误,1and1.com没有重写

时间:2011-06-03 21:11:50

标签: .htaccess mod-rewrite

以下.htaccess文件在我的本地服务器上运行良好。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} \.cssc
RewriteRule . style.php [L]

RewriteRule ^admin\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . admin.php [L]

我正在为客户做一些工作,他正在使用1and1.com。我对他的账户或他的套餐一无所知。

所有文件都被重写为admin.php(除非它们确实存在)。问题是,我得到了404.

我知道它正在读取.htaccess文件,因为:

  1. 我可以在文件中放入垃圾并获得500错误。
  2. 如果我进行一般性重写(所有页面都转到admin.php),它就可以了。
  3. 此外,似乎1and1是自己的重写。如果我转到:http://somewhere/afile,即使我没有请求afile.js,也会包含.js。这太奇怪了。

    有没有人有这方面的经验?或任何见解?

2 个答案:

答案 0 :(得分:1)

添加一些信息..

1和1似乎已经存在某种可能会干扰您自己规则的默认重写 - 例如: RewriteRule ^product$ /product.php [L]

它为此提供了404,以及与我的根文件夹中预先存在的.php文件匹配的任何其他重写规则。

“固定”它的两件事:

将重写文本更改为不再匹配文件名: RewriteRule ^productz$ /product.php [L]

或者,更改文件名: RewriteRule ^product$ /product_.php [L]

两者都有效 - 两者都很烦人。

答案 1 :(得分:0)

答案很简单“不要嵌套.htaccess文件”。我在子文件夹中有一个。