Php .htaccess文件可以处理错误,但不能重写
我已经创建了一个.htaccess文件,可以让服务器为我提供一个自定义404页面。但是,当我尝试重新编写时,它不起作用。Php .htaccess文件可以处理错误,但不能重写,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我已经创建了一个.htaccess文件,可以让服务器为我提供一个自定义404页面。但是,当我尝试重新编写时,它不起作用。 htaccess文件位于根目录中。 我不知道这为什么不起作用。我已经检查了phpinfo,在Apache2下,它声明mod_rewrite已经加载。 我真的被难住了
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中匹配意外的文本
- 点需要在正则表达式中转义,否则将匹配任何字符
符合目录指令,Apache从.htaccess
URI模式中删除当前目录路径(因此是前导斜杠)RewriteRule
ErrorDocument 404 /htaccessTest/errors/404_message.php
RewriteEngine On
RewriteRule ^htaccessTest/index\.php$ /htaccessTest/phpinfo.php [L,NC]
- 最好使用行开始/结束定位,以避免在URI中匹配意外的文本
- 点需要在正则表达式中转义,否则将匹配任何字符
符合目录指令,Apache从.htaccess
URI模式中删除当前目录路径(因此是前导斜杠)RewriteRule
ErrorDocument 404 /htaccessTest/errors/404_message.php
RewriteEngine On
RewriteRule ^htaccessTest/index\.php$ /htaccessTest/phpinfo.php [L,NC]
- 最好使用行开始/结束定位,以避免在URI中匹配意外的文本
- 点需要在正则表达式中转义,否则将匹配任何字符
符合目录指令,Apache从.htaccess
URI模式中删除当前目录路径(因此是前导斜杠)RewriteRule
ErrorDocument 404 /htaccessTest/errors/404_message.php
RewriteEngine On
RewriteRule ^htaccessTest/index\.php$ /htaccessTest/phpinfo.php [L,NC]
- 最好使用行开始/结束定位,以避免在URI中匹配意外的文本
- 点需要在正则表达式中转义,否则将匹配任何字符
符合目录指令,Apache从.htaccess
URI模式中删除当前目录路径(因此是前导斜杠)RewriteRule
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