我有个关于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
。