【问题标题】:Dynamic DirectoryIndex (Regex DirectoryIndex?)动态目录索引(Regex DirectoryIndex?)
【发布时间】:2015-07-10 17:41:11
【问题描述】:

在 Apache 中,是否可以有一个动态/正则表达式 DirectoryIndex 指令?

正常的 DirectoryIndex 会做:

server/DIRECTORY1 --> server/DIRECTORY1/index.html
server/DIR1/DIR2  --> server/DIR1/DIR2/index.html
...
etc

但是我将如何完成:

server/DIRECTORY1 --> server/DIRECTORY1/DIRECTORY1.html
server/DIR1/DIR2  --> server/DIR1/DIR2/DIR2.html
...
etc

我想要这个,因为我在编辑器中打开了许多索引文件,并且很难区分标签,因为它们都被命名为索引。

  • 我更喜欢在httpd.conf 中可以在整个站点范围内工作的东西
  • 我想保留mod_dir 所具有的带/不带斜杠检测功能。
  • 我使用 mod_rewrite 的尝试往往会弄乱最后的 URI 变量 :(

【问题讨论】:

    标签: apache mod-rewrite directoryindex


    【解决方案1】:

    您可以将此代码放入httpd.confmod_rewrite 块)

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteCond %{DOCUMENT_ROOT}/$1/$2/$2\.html -f
    RewriteRule ^/?(.+?)/([^/]+)/?$ /$1/$2/$2.html [L]
    
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteCond %{DOCUMENT_ROOT}/$1/$1\.html -f
    RewriteRule ^/?([^/]+)/?$ /$1/$1.html [L]
    

    【讨论】:

    • 如果我没记错的话,这只适用于两个深度的目录,不是吗?在我最初的示例中,我的意思是一种适用于任何深度的解决方案...server/DIR1/DIR2/.../DIRN --> server/DIR1/DIR2/../DIRN/DIRN.html
    • 它没有。我写了一个代码,考虑到你所说的。第一个块是多级文件夹的规则,第二个块是一个级文件夹
    • 哦,我现在明白了!第一个块中的$1 将包含斜杠。感谢您的澄清!
    • 没错。不客气。如果它按预期工作,现在让我告诉你
    猜你喜欢
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 2013-10-08
    • 2012-07-27
    • 2011-12-03
    相关资源
    最近更新 更多