我有以下网址:myweb.com/products
我的主人有一个名为“产品”的目录。
输入上述网址时,会将我重定向到myweb.com/products/并列出目录中的文件。
如何忽略/禁用它的工作方式,所以不是用名称搜索目录,而是尝试查找具有该名称的文件?
因此,当我输入myweb.com/products时,它会尝试查找名为products的文件,如果找不到它会发送到403页
*这是一个例子。我有更多目录。
修改
也许我没有足够好地解释我的自我
我有以下RewriteRule
RewriteRule ^(.*).php redirect.php [L,QSA]
将重定向到redirect.php的所有内容重定向 因为产品是一个文件夹,它不会将我重定向到redirect.php,这就是问题..
答案 0 :(得分:2)
如果您有一个具有此名称的目录,则apache无法找到具有该名称的文件。
要关闭目录列表,请使用Options
指令
Options -Indexes
这将阻止列出目录内容。但错误消息不是404页面,而是403 Forbidden。
此外,您必须使用
关闭index文件的查找DirectoryIndex disabled
否则,Apache将显示index.html,index.php,...文件(如果存在)。
要防止将斜杠添加到目录末尾,请使用
DirectorySlash off
要重写为具有相同名称并附加.php
的文件,您可以使用此RewriteRule
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.+)/ $1.php
查看请求的路径是否为目录,如果是,则还检查具有相同名称且.php
为其扩展名的常规文件。如果两者都为真,则重写为PHP文件。
如果您想要重定向而不仅仅是重写,则必须向RewriteRule添加R
标志
RewriteRule (.+)/ $1.php [R,L]
如果它应重写为redirect.php
而不是product.php
,请使用
RewriteRule (.+)/ redirect.php
总而言之,这给出了简化的
DirectorySlash off
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ redirect.php [L]
答案 1 :(得分:0)
在myweb.com/products中写一个index.php来过滤掉你想要的名字,我猜。