Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
Regex Htaccess公用文件夹重写规则_Regex_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Regex Htaccess公用文件夹重写规则

Regex Htaccess公用文件夹重写规则,regex,apache,.htaccess,mod-rewrite,url-rewriting,Regex,Apache,.htaccess,Mod Rewrite,Url Rewriting,我正在用PHP开发一个小型定制MVC项目,在htaccess方面遇到了一些问题。最初,我的htaccess将所有流量路由到根目录中的index.php,并将剩余路径作为参数传递。这与此代码完美配合: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ index.php?path=$1 [NC,L,QSA] 我现在遇到的问题是,我需

我正在用PHP开发一个小型定制MVC项目,在htaccess方面遇到了一些问题。最初,我的htaccess将所有流量路由到根目录中的index.php,并将剩余路径作为参数传递。这与此代码完美配合:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?path=$1 [NC,L,QSA]
我现在遇到的问题是,我需要将index.php文件移动到/public目录中。我在互联网上搜寻答案,发现了一个代码片段,它似乎只要点击/,就可以到达那里,但一旦url变成/register/或其他任何东西,它就变成404了

# Get rid of /public/ in the URL, and route all requests through
# the Index.php file
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /public/index.php?path=$1 [NC,L,QSA]
RewriteCond %{REQUEST_URI} !/public/ [NC]
RewriteRule ^(.*?)/?$ public/$1 [L]

我知道最后一行在重写index.php时没有任何意义,在我看来是正确的路径(至少它像我希望的那样通过了参数!),但如果没有这两行,它似乎不起作用,我已经试了好几个小时了。希望有人能帮忙!干杯

在.htaccess中仅保留此内容:

DirectoryIndex index.php
RewriteEngine On

RewriteRule ^/?$ public/ [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ public/?path=$1 [L,QSA]

你试过重写BASE指令吗?它将在您为基础规则设置的uri之前加上前缀。这意味着您可以使用相同的.htaccess,只需添加上面的RewriteBase指令,其值为“/public”Hi,.htaccess和php是分开的:)php与此无关:)根据@MarkSkayff,我尝试了以下方法:(注意最后一行再次被注释掉)最后一行被注释掉,当我试图访问/时,我会得到一个目录列表,而任何其他url我都会得到一个404。根据您的问题@anubhava,您的建议:为/生成一个目录列表,并为任何超过该列表的内容生成一个404。@Epodax同意它们不一样,也不相互依赖。我添加PHP标记主要是因为它是建议的(我计算这个词在我的问题中出现了多少次)。您是否认为这与PHP无关,因此删除标记会更有帮助?