.htaccess给出内部错误而不是404

时间:2014-03-31 08:25:58

标签: php apache .htaccess mod-rewrite

好的,所以我有一个文件结构设置,我的所有页面都设置在一个名为pages的文件夹中。

我需要htaccess重定向,以便example.com/page1转到example.com/page/page1.php

所以,我使用了下面的.htaccess。我的问题是,当我有这个设置时,我得到一个500错误,而不是出现自定义404错误页面。

AllowOverride All
ErrorDocument 404 /pages/404.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /pages/$1.php [L]

有关我做错的任何建议吗?

2 个答案:

答案 0 :(得分:0)

AllowOverride不允许在那里,您应该将其嵌入<Directory>部分。另请参阅Apache manual

<Directory /path/to/my/directory>
    AllowOverride All
</Directory>

答案 1 :(得分:0)

用以下内容替换您的规则:

AllowOverride All
ErrorDocument 404 /pages/404.php

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/pages/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /pages/$1.php [L]