0

我有以下 .htaccess 文件,它应该将所有不存在的文件/文件夹重写为 index.php。有人可以建议一种方法来调试为什么这不起作用吗?当我转到一个不存在的文件夹时,我收到一个 404 not-found 页面。

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^.*$ ./index.php

当我访问domain.com/index.php 文件时正确显示

.htaccess 文件与 index.php 位于同一目录中

4

3 回答 3

1

首先,您必须确保mod_rewrite已启用并正常工作,否则您将不断获得500 Internal Server Error.

您可以检查,只需使用apache_get_modules(). 例如,

// File : test.php
<?php

if (in_array('mod_rewrite', apache_get_modules()){
   echo 'mod_rewrite is installed and ready to be used';
} else {
   echo 'mod_rewrite is not installed';
}

如果它打印出来mod_rewrite is installed and ready to be used,那么你可以使用这样的东西,

    RewriteEngine On

    # I guess you're missing RewriteBase
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,L]
于 2013-10-05T17:47:30.747 回答
0

你可以试试这个代码:

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^ /index.php [L]
于 2013-10-05T17:03:36.963 回答
0

你试过这个吗

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ /index.php [L]

编辑这里是帖子你可能对调试 .htaccess 重写规则有用的提示

于 2013-10-05T17:12:14.150 回答