Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache重写空正则表达式(根)_Apache_.htaccess_Mod Rewrite_Redirect_Document Root - Fatal编程技术网

Apache重写空正则表达式(根)

Apache重写空正则表达式(根),apache,.htaccess,mod-rewrite,redirect,document-root,Apache,.htaccess,Mod Rewrite,Redirect,Document Root,我在Windows8笔记本电脑(WAMP服务器)上运行了Apache2.4.4,我发现.htaccess mod_重写规则的行为非常奇怪 我想将我的网站的根目录重定向到一个特定的文件。我的.htaccess如下所示: RewriteEngine On RewriteBase / RewriteRule $^ /static/home.php [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{DOCUMENT_ROOT}%{REQ

我在Windows8笔记本电脑(WAMP服务器)上运行了Apache2.4.4,我发现.htaccess mod_重写规则的行为非常奇怪

我想将我的网站的根目录重定向到一个特定的文件。我的.htaccess如下所示:

RewriteEngine On
RewriteBase /
RewriteRule $^ /static/home.php [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ router.php?url=$1 [L,QSA]
只有当根目录中没有index.php文件时,这才有效。当我创建index.php文件时,Apache会将空路径直接重定向到索引文件,而不必考虑第一条重写规则

有没有办法让这些重写规则和index.php文件一起工作?换句话说,我的示例是可行的,但我想将
router.php
重命名为
index.php
,并保持这两个重写规则都有效


谢谢

您可以调整您的正则表达式模式,使其在两种情况下都能工作:

DirectoryIndex something-else.php
RewriteEngine On

RewriteRule ^$ /static/home.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

是的,可以。不幸的是,我不能使用它,因为我可能过于简化了我的示例。我需要index.php文件(我的网站路由器)处理的其他URL。我要更新我的问题。你知道Apache为什么会这样做吗?我会等待你的编辑给你一些可能的解决方法。好吧,这不起作用,但是如果我将
DirectoryIndex.php
更改为
DirectoryIndex something.php
,它会起作用。谢谢,我不知道目录索引!很高兴知道答案是正确的,你可以点击我答案左上角的勾号,将答案标记为已接受。是的,如果你按照我所写的方式修改示例,那么我会将你的答案标记为解决方案