Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
.htaccess 重写规则以隐藏文件夹,不';没有尾随斜杠就不能正常工作_.htaccess_Mod Rewrite_Apache2 - Fatal编程技术网

.htaccess 重写规则以隐藏文件夹,不';没有尾随斜杠就不能正常工作

.htaccess 重写规则以隐藏文件夹,不';没有尾随斜杠就不能正常工作,.htaccess,mod-rewrite,apache2,.htaccess,Mod Rewrite,Apache2,我有一个奇怪的apache mod_重写问题。我需要对用户隐藏一个子目录,但将每个请求重定向到该子目录。我在stackoverflow上发现了几个非常类似的问题,但没有什么真正合适的,所以我决定发布一个新问题 我的.htaccess如下所示: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FIL

我有一个奇怪的apache mod_重写问题。我需要对用户隐藏一个子目录,但将每个请求重定向到该子目录。我在stackoverflow上发现了几个非常类似的问题,但没有什么真正合适的,所以我决定发布一个新问题

我的.htaccess如下所示:

RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.*)?$ foo/$1 [QSA,L] 重新启动发动机 重写基/ 重写cond%{REQUEST_FILENAME}-F 重写cond%{REQUEST_FILENAME}-D 重写cond%{REQUEST_FILENAME}-L 重写规则^(.*)?$foo/$1[QSA,L] 文档根目录仅包含以下文件夹/文件:

/foo/bar/index.html /foo/bar/index.html 我现在希望example.com/bar和example.com/bar/只显示index.html的内容

相反,example.com/bar/按预期显示内容,但example.com/bar使用301将我重定向到example.com/bar/foo/an,然后显示内容。我真的不明白为什么在这种情况下会有301重定向

当我把东西放在这

RewriteCond %{REQUEST_URI} !^[^.]*/$ RewriteCond %{REQUEST_URI} !^[^.]*\.html$ RewriteCond %{REQUEST_URI} !^[^.]*\.php$ RewriteRule ^(.*)$ $1/ [QSA,L] 重写cond%{REQUEST_URI}^[^.]*/$ 重写cond%{REQUEST_URI}^[^.]*\.html$ 重写cond%{REQUEST_URI}^[^.]*\.php$ 重写规则^(.*)$$1/[QSA,L] 除此之外,这个规则似乎有效,但这需要我列出所有使用过的文件扩展名

是否有其他方法可以省略重定向,文件夹“bar”永远不会被外部用户看到


提前谢谢

第一条重写规则从/foo/(.)重定向到$1,第二条从(.)重定向到$1


只是想法,这还没有经过测试。

迟做总比不做好

使用一个简单的重写规则,将/附加到每个不在上的url

# only directories
RewriteCond %{REQUEST_FILENAME} !-f
# exclude there directories
RewriteCond %{REQUEST_URI} !^/excluded-dirs
# exclude these extensions
RewriteCond %{REQUEST_URI} !\.excluded-extension$
# exclude request that already have a /
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R=301,L]
^(.*)/?$
将使尾部斜杠成为可选选项供参考