以下.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文件,因为:
此外,似乎1and1是自己的重写。如果我转到:http://somewhere/afile
,即使我没有请求afile.js
,也会包含.js
。这太奇怪了。
有没有人有这方面的经验?或任何见解?
答案 0 :(得分:1)
添加一些信息..
1和1似乎已经存在某种可能会干扰您自己规则的默认重写 - 例如:
RewriteRule ^product$ /product.php [L]
它为此提供了404,以及与我的根文件夹中预先存在的.php文件匹配的任何其他重写规则。
“固定”它的两件事:
将重写文本更改为不再匹配文件名:
RewriteRule ^productz$ /product.php [L]
或者,更改文件名:
RewriteRule ^product$ /product_.php [L]
两者都有效 - 两者都很烦人。
答案 1 :(得分:0)
答案很简单“不要嵌套.htaccess文件”。我在子文件夹中有一个。