我有个关于htaccess的问题要问
我有这个结构

book
-> read.php
-> avatar
  --> 1
    --> index.html

所以在过去,我使用read.php来提供我的内容
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ read.php?id=$1&num=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ read.php?id=$1&num=$2&page=$3 [L]

但是现在,我有了自己的文件夹结构和预先生成的html,所以它们位于
avatar/1/index.html

但是当我输入例如
avatar/1/2是一个不存在的fodler和文件,我想使用read.php来代替它试图访问返回403的文件和文件夹。
如果文件夹不包含index.html,我如何更改htaccess代码以使用read.php及其查询字符串
谢谢
例如,如果我键入
/book/avatar/2

因为没有/book/avatar/2/index.html(目前禁止抛出403)
它应该使用htaccess
book/read.php?id=$1&num=$2&page=$3

--更新的htaccess
RewriteEngine on
RewriteBase /book

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d


RewriteRule ^([^/]+)/(\d+)/([^/]+)$ read.php?id=$1&num=$2&page=$3 [L,QSA]
RewriteRule ^([^/]+)/(\d+)/?$ read.php?id=$1&num=$2 [L,QSA]
RewriteRule ^([^/]+)/?$ chapter.php?id=$1 [L,QSA]

如果我打字
example.com/book/avatar/2/1

它仍然加载chapter.php?ID=1
如果我打字
example.com/book/avatar

它还加载chapter.php?ID=1
如果我在重写后输入这个
RewriteRule ^ - [L]

所有文件都将出现404错误

最佳答案

/book/.htaccess中,您可以创建此规则:

RewriteEngine On
RewriteBase /book/

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/(\d+)/([^/]+)$ read.php?id=$1&num=$2&page=$3 [L,QSA]

RewriteRule ^([^/]+)/(\d+)/?$ read.php?id=$1&num=$2 [L,QSA]

RewriteRule ^([^/]+)/?$ chapter.php?id=$1 [L,QSA]

只有当请求不是文件或目录时,才会处理/book/avatar/2/book/avatar

07-25 22:58
查看更多