我有apache&我本地的Windows机器上的PHP和我的.htaccess规则工作正常。我将所有文件上传到Linux服务器并获得不同的结果。我完全控制了我的Linux VPS。它不是共享托管或任何东西。 我创建了一个文件showme.php,所有请求都应该去。 showme.php只输出一些$ _SERVER变量,所以我知道它有效。但是每次向服务器发出的请求都会给我找不到404。同样的请求在本地提供showme.php就像它应该的那样。
- 本地示例: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 :(得分: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>
答案 1 :(得分:0)
答案是在我的httpd.conf中我需要在一个特定位置设置AllowOverride All。它存在于某些目录中,但我猜不是默认的..