HTACCESS:如何阻止对所有文件和文件夹的访问,但在某些情况下重定向到某个PHP文件

HTACCESS:如何阻止对所有文件和文件夹的访问,但在某些情况下重定向到某个PHP文件,php,apache,.htaccess,mod-rewrite,redirect,Php,Apache,.htaccess,Mod Rewrite,Redirect,我已经成功地使我的网站的黑客无法访问实际文件夹(如果在主URL后键入了非文件夹名称,甚至无法获得404消息)。htaccess列表: Options +FollowSymLinks RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . / [L,R=301] 那很好。但是,我希望这样,如果有人在URL之后添加文本ABC,那么该站点将重定向到XYZ.PHP。例如: www.mysite.com/abc …重定向到:

我已经成功地使我的网站的黑客无法访问实际文件夹(如果在主URL后键入了非文件夹名称,甚至无法获得404消息)。htaccess列表:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . / [L,R=301]
那很好。但是,我希望这样,如果有人在URL之后添加文本ABC,那么该站点将重定向到XYZ.PHP。例如:

www.mysite.com/abc
…重定向到:

www.mysite.com/xyz.php
(显然,ABC和XYZ只是实际文本的占位符。)在保留上述.htaccess代码的同时,最有效的方法是什么

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^abc$ "/xyz.php" [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . / [L,R=301]

更新:正如@bloodyKnuckles所注意到的,一个
/
丢失了。

在“一网打尽”规则之前添加一个特定的重写规则,在
xyz.php
之前添加一个正斜杠
/
,可以在我的设置中使用

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^abc$ /xyz.php [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . / [L,R=301]

使用正斜杠指示apache在web服务器根目录中查找替换路径。(作为补充说明,重定向(
R=301
)在我的浏览器中进行缓存,因此每次进行更改时,我都会打开一个新的chrome incognito窗口。)

是否需要将文本“abc”传递到.script xyz.php?不,我只需要重定向到xyz.php,它位于网站根目录之外(index.php位于何处,用户将在何处。有关更多信息,请参阅下面我对Pierre建议的回复。Tom,请务必选择一个答案,以帮助其他人稍后阅读您的问题。这在我的本地服务器和我的实时站点上都失败。我正在使用XAMPP作为我的本地服务器,假设该站点名为XXX,是HT的一个文件夹DOCS.因此,我只需转到:XXX,当我按照说明添加您的重写规则,然后在“XXX/”之后添加“admin”,URL将更改为:XXX/使用localhost限定初始URL,如:localhost/XXX在“admin”之后生成结果添加到末尾:localhost/在live站点上,它不起任何作用。您可能需要在上的RewriteEngine之后添加一个
RewriteBase/XXX
指令。不幸的是,这不起作用。出现与上述相同的结果。是的,正如@bloodyKnuckles注意到的,缺少一个
/
。)成功!谢谢!它现在可以在我的本地主机和live服务器上运行了。等等……我说得太快了。这在Chrome、Opera、IE和Safari上运行,但在Firefox中不起作用。为什么Firefox不遵守这个指令?再次等等,请注意……Firefox正在缓存我的搜索;打开一个匿名窗口解决了问题。再次感谢。Regex question:如果我想让abc或abc/重新录制到xyz.php,该怎么办?我需要在^abc$中插入什么正则表达式来覆盖abc或正在发行的abc/的情况?
^abc/?$
问号使前面的字符成为可选字符。