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 使用.htaccess_Apache_.htaccess - Fatal编程技术网

Apache 使用.htaccess

Apache 使用.htaccess,apache,.htaccess,Apache,.htaccess,我刚开始学习如何写htaccess。 我从中获得了以下代码,它将所有内容重定向到index.php文件 <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/ [L] </IfModule> 那么这里的问题是什么呢?这是对第一个问题的回答,对于第二个问题,您应该向我们提供更多信息(如/v

我刚开始学习如何写htaccess。 我从中获得了以下代码,它将所有内容重定向到index.php文件

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    public/    [L]
    RewriteRule    (.*) public/    [L]
</IfModule>

那么这里的问题是什么呢?

这是对第一个问题的回答,对于第二个问题,您应该向我们提供更多信息(如
/var/log/apache2/error.log中的日志条目)

^
匹配字符串的开头

$
匹配字符串的结尾

^$
匹配空字符串

匹配任何字符

*
允许0到前面匹配的任意数量的发生

标记一个以后可以引用的组


(.*)
将匹配任意数量的字符

我认为您处于重写循环中,就像:
您可以将abc.com/anything重写为abc.com/public,也可以将/public重写为/public。
也许您应该指定必须重写的url。(限制您的请求)如下所示:

RewriteEngine on
RewriteRule    ^$    public/    [NC,L]
RewriteRule    ^index.php(.*)$ public/$1    [NC,L]

将index.php?请求重写为public/?请求

不要用不相关的标记污染标记,如“php”或“MVC”public是目录。L表示如果此重写规则捕获请求,则这是htaccess运行的最后一行,因此bail out^$表示空字符串。它的计算结果将为./public/,因为它不是在寻找文件。另外,在访问URL时,使用Fiddler来观察标题的变化也是值得的。重定向循环随着日期变得清晰。[NC,L]表示该规则不区分大小写,并且这些条件匹配的最后一条规则非常有用…因此“.”表示所有字符,包括特殊字符、/…等?最后,我得到了以下关于.htaccess的教程
RewriteEngine on
RewriteRule    ^$    public/    [NC,L]
RewriteRule    ^index.php(.*)$ public/$1    [NC,L]