我想重写一些网址,但因为我是一个.htaccess
刷新,我不知道如何使自己。
到目前为止我已经:example.com/page/AAA0001/?id=78324#78324
现在该页正在从AAA0001/index.php
加载,我需要什么文件夹名称ex:AAA0001
或AAA0002
index.php
应该从example.com/page/index.php
提供服务,但是上面的URL不应该更改(例如example.com/page/AAA0001/?id=78324#78324
)
如何使用.htaccess
实现这一点?
1条答案
按热度按时间zpgglvta1#
现在页面正在从
AAA0001/index.php
加载因此
AAA0001
是文件系统上的一个物理“目录”,而不仅仅是一个(虚拟的)URL路径段(那么为什么/page/AAA0001/index.php
一开始就存在呢?)DirectoryIndex
指令(mod_dir的一部分)决定Apache在请求目录时尝试提供的文件。目前,它可能被设置为类似于
DirectoryIndex index.php
(相对URL路径)的值,因此它尝试从请求的任何目录中提供index.php
。但是,您可以将其设置为根目录相对URL路径,以便在请求目录时始终为特定文件提供服务。例如:
现在,当您请求类似
example.com/page/AAA0001/?id=78324#78324
的URL(其中/page/AAA0001
是物理目录)时,它将提供/page/index.php
而不是/page/AAA0001/index.php
。您也可以同时设置这两个参数,以便它将在请求的目录中提供
index.php
(如果存在),否则 fallback 到/page/index.php
:参考编号:
另一方面,如果这只适用于
/page/ABC01234/
的请求(其中目录由3个大写字母后跟4个数字组成-如您的示例所示),则可以将DirectoryIndex
指令与<If>
表达式结合使用。例如:或者,改用mod_rewrite:
前面的 condition(
RewriteCond
指令)可能是不必要的,但这确保了只有对物理目录的请求被重写到/page/index.php
而不是可能不存在的/page/ZZZ9999/
。这模仿了上面提到的DirectoryIndex
的行为。