2012-11-22 72 views
0

我有我的本地Windows机器上的apache & PHP和我的.htaccess规则工作正常。我将我的所有文件上传到我的Linux服务器,并获得不同的结果。我完全控制了我的Linux VPS。它不是共享主机或任何东西。 我创建了一个文件showme.php,所有请求都应该去。 showme.php只是输出一些$ _SERVER变量,所以我知道它的工作。但是对服务器的每个请求都会给我404找不到。同样的请求本地提供showme.php像它应该。.htaccess在本地工作,但不在服务器上

- 本地例如:http://localhost/somepage(我得到showme.php呈现正确的页面)

-Server例如:http://mydomain.com/somepage(我得到一个404消息)

这是我的.htaccess文件。我无法弄清楚为什么我会得到不同的结果。有文件权限的东西?

# AddType x-mapp-php5 .php 
# AddHandler x-mapp-php5 .php 

RewriteEngine on 
Options +FollowSymlinks 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . showme.php [L] 

ErrorDocument 404 /page-unavailable/ 

<files ~ "\.tpl$"> 
order deny,allow 
allow from none 
deny from all 
</files> 
+0

是mod_rewrite在该服务器上启用? – noslone

+0

仅供参考,我已经检查和mod_rewrite启用时,我检查与phpinfo(); – Thread7

+1

您可能不允许覆盖启用 - 检查Apache错误日志。 – Kami

回答

0

答案是,在我的httpd.conf我需要的AllowOverride所有集一个特定的地方。它在某些目录中,但我猜不是默认的..

0

如果使用phpinfo()并做mod_rewrite搜索(通常在配置),你将能够告诉,如果你有使用RewriteRules的能力。这通常就是为什么你看到IfModule缠着你重写:

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . showme.php [L] 
</IfModule> 
+0

答案是,在我的httpd.conf中,我需要将AllowOverride All设置在某个特定位置。它在某些目录中,但我猜不是默认的。 – Thread7

相关问题