Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess文件可以处理错误,但不能重写_Php_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Php .htaccess文件可以处理错误,但不能重写

Php .htaccess文件可以处理错误,但不能重写,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我已经创建了一个.htaccess文件,可以让服务器为我提供一个自定义404页面。但是,当我尝试重新编写时,它不起作用。 htaccess文件位于根目录中。 我不知道这为什么不起作用。我已经检查了phpinfo,在Apache2下,它声明mod_rewrite已经加载。 我真的被难住了

我已经创建了一个.htaccess文件,可以让服务器为我提供一个自定义404页面。但是,当我尝试重新编写时,它不起作用。
htaccess文件位于根目录中。

我不知道这为什么不起作用。我已经检查了phpinfo,在Apache2下,它声明mod_rewrite已经加载。
我真的被难住了<不知道发生了什么事! 任何帮助都会很好

更新1 根据下面突出显示的内容,我发现它仍然不起作用!我做了一些更改,现在我得到的只是404错误消息,除非我导航到索引页面。 以下是变化:

ErrorDocument 404 /htaccessTest/errors/404_message.php
RewriteEngine On
RewriteRule ^htaccessTest/test\.php$ /htaccessTest/phpinfo\.php$ [L,NC]
我使用url访问它:

localhost/htaccessTest/test.php

(忽略缺少http://,我已经删除了它,这样它就不会认为它是一个链接)。
还有其他想法吗


谢谢

请尝试不带斜杠的规则:

ErrorDocument 404 /htaccessTest/errors/404_message.php

RewriteEngine On
RewriteRule ^htaccessTest/index\.php$ /htaccessTest/phpinfo.php [L,NC]
  • 最好使用行开始/结束定位,以避免在URI中匹配意外的文本
  • 点需要在正则表达式中转义,否则将匹配任何字符
  • .htaccess
    符合目录指令,Apache从
    RewriteRule
    URI模式中删除当前目录路径(因此是前导斜杠)

尝试不带斜杠的规则:

ErrorDocument 404 /htaccessTest/errors/404_message.php

RewriteEngine On
RewriteRule ^htaccessTest/index\.php$ /htaccessTest/phpinfo.php [L,NC]
  • 最好使用行开始/结束定位,以避免在URI中匹配意外的文本
  • 点需要在正则表达式中转义,否则将匹配任何字符
  • .htaccess
    符合目录指令,Apache从
    RewriteRule
    URI模式中删除当前目录路径(因此是前导斜杠)

尝试不带斜杠的规则:

ErrorDocument 404 /htaccessTest/errors/404_message.php

RewriteEngine On
RewriteRule ^htaccessTest/index\.php$ /htaccessTest/phpinfo.php [L,NC]
  • 最好使用行开始/结束定位,以避免在URI中匹配意外的文本
  • 点需要在正则表达式中转义,否则将匹配任何字符
  • .htaccess
    符合目录指令,Apache从
    RewriteRule
    URI模式中删除当前目录路径(因此是前导斜杠)

尝试不带斜杠的规则:

ErrorDocument 404 /htaccessTest/errors/404_message.php

RewriteEngine On
RewriteRule ^htaccessTest/index\.php$ /htaccessTest/phpinfo.php [L,NC]
  • 最好使用行开始/结束定位,以避免在URI中匹配意外的文本
  • 点需要在正则表达式中转义,否则将匹配任何字符
  • .htaccess
    符合目录指令,Apache从
    RewriteRule
    URI模式中删除当前目录路径(因此是前导斜杠)

经过反复尝试,终于找到了答案

这似乎是重写的第一部分。 第一节和第二节有一个我没有意识到的区别,那就是URL在使用“重写”时有点“重置”

通过给出现在重新工作的示例,可以更容易地解释这一点

原件:

RewriteRule ^htaccessTest/test\.php$ /htaccessTest/phpinfo\.php$ [L,NC]
新的:

如您所见,第一部分引用了htaccessTest。您不需要这个部分,因为url“已经在”这个文件结构中。您的url是:“localhost/htaccessTest/test.php”

第二部分大致相同,我只是删除了正则表达式和[L,NC]。[L,NC]以后可能会派上用场,但为了简单起见,我删除了它

结果是:

ErrorDocument 404 /htaccessTest/errors/404_message.php
RewriteEngine On 
RewriteRule ^test.php /htaccessTest/phpinfo.php

谢谢你们的帮助!(尤其是@anubhava)

在破解后终于找到了答案

这似乎是重写的第一部分。 第一节和第二节有一个我没有意识到的区别,那就是URL在使用“重写”时有点“重置”

通过给出现在重新工作的示例,可以更容易地解释这一点

原件:

RewriteRule ^htaccessTest/test\.php$ /htaccessTest/phpinfo\.php$ [L,NC]
新的:

如您所见,第一部分引用了htaccessTest。您不需要这个部分,因为url“已经在”这个文件结构中。您的url是:“localhost/htaccessTest/test.php”

第二部分大致相同,我只是删除了正则表达式和[L,NC]。[L,NC]以后可能会派上用场,但为了简单起见,我删除了它

结果是:

ErrorDocument 404 /htaccessTest/errors/404_message.php
RewriteEngine On 
RewriteRule ^test.php /htaccessTest/phpinfo.php

谢谢你们的帮助!(尤其是@anubhava)

在破解后终于找到了答案

这似乎是重写的第一部分。 第一节和第二节有一个我没有意识到的区别,那就是URL在使用“重写”时有点“重置”

通过给出现在重新工作的示例,可以更容易地解释这一点

原件:

RewriteRule ^htaccessTest/test\.php$ /htaccessTest/phpinfo\.php$ [L,NC]
新的:

如您所见,第一部分引用了htaccessTest。您不需要这个部分,因为url“已经在”这个文件结构中。您的url是:“localhost/htaccessTest/test.php”

第二部分大致相同,我只是删除了正则表达式和[L,NC]。[L,NC]以后可能会派上用场,但为了简单起见,我删除了它

结果是:

ErrorDocument 404 /htaccessTest/errors/404_message.php
RewriteEngine On 
RewriteRule ^test.php /htaccessTest/phpinfo.php

谢谢你们的帮助!(尤其是@anubhava)

在破解后终于找到了答案

这似乎是重写的第一部分。 第一节和第二节有一个我没有意识到的区别,那就是URL在使用“重写”时有点“重置”

通过给出现在重新工作的示例,可以更容易地解释这一点

原件:

RewriteRule ^htaccessTest/test\.php$ /htaccessTest/phpinfo\.php$ [L,NC]
新的:

如您所见,第一部分引用了htaccessTest。您不需要这个部分,因为url“已经在”这个文件结构中。您的url是:“localhost/htaccessTest/test.php”

第二部分大致相同,我只是删除了正则表达式和[L,NC]。[L,NC]以后可能会派上用场,但为了简单起见,我删除了它

结果是:

ErrorDocument 404 /htaccessTest/errors/404_message.php
RewriteEngine On 
RewriteRule ^test.php /htaccessTest/phpinfo.php

谢谢你们的帮助!(尤其是@anubhava)

您还应该特别提到您添加的
的转义。这对于确保规则只匹配单个所需的URI非常重要。感谢您提供的信息。不幸的是,什么是文件系统loca