我想知道为什么我的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]
上面的代码不能一起使用。那是为什么?
答案 0 :(得分:1)
它不起作用,因为基本上你在.htaccess中做了两次相同的事情:
ErrorDocument 404 http://xxxxxx/404.php
如果找不到请求的页面,ErrorDocument会重定向到404。两个RewriteConds RewriteCond %{REQUEST_FILENAME} !-f
和RewriteCond %{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