为什么我的htaccess不允许多个规则

时间:2014-05-04 04:00:12

标签: .htaccess

我想知道为什么我的htaccess不允许多个规则?这是代码:

RewriteEngine on  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*)$ $1.php [QSA,L]

基本上我想添加404规则。这是代码:

ErrorDocument 404 http://xxxxxx/404.php

基本上我不能在一个htaccess文件中添加所有内容。这是代码:

ErrorDocument 404 http://xxxxxx/404.php
RewriteEngine on  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*)$ $1.php [QSA,L]

上面的代码不能一起使用。那是为什么?

2 个答案:

答案 0 :(得分:1)

它不起作用,因为基本上你在.htaccess中做了两次相同的事情:

ErrorDocument 404 http://xxxxxx/404.php

如果找不到请求的页面,ErrorDocument会重定向到404。两个RewriteConds RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-d加上RewriteRule将完全相同,如果找不到请求文件,它们将重定向 - 在您的情况下,它们将重定向到index.php。

所以你可以尝试以下两种方法之一:

RewriteEngine on
ErrorDocument 404 /404.php

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*)$ 404.php [QSA,L]

答案 1 :(得分:0)

目前,URL被视为一个字符串,让它知道它是一个你应该在开头添加斜杠的路径

试一下,看看它是否有效

ErrorDocument 404 /404.php