【问题标题】:.htaccess rewrite folder, and set environmental params.htaccess 重写文件夹,并设置环境参数
【发布时间】:2011-02-08 08:15:47
【问题描述】:

我想做一个这样的把戏:

我有这些文件夹

folder_dev
folder_live

还有这个代码库:

folder

所有文件夹都在同一级别。

我愿意

  1. folder_dev 重定向到folder 并将环境参数主题设置为'dev'
  2. folder_live 重定向到相同的folder,但将环境参数主题设置为“live”

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting environment-variables


    【解决方案1】:

    如果你想拥有物理目录,你需要在每个目录中都有一个 .htaccess 文件,设置如下:

    在 /folder/.htaccess 中:

    SetEnvIf REDIRECT_THEME (.*) THEME=$1
    

    在 /folder_dev/.htaccess 中:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^(.*?)(?:folder_dev)
    RewriteRule .* %1folder/$0 [E=THEME:dev]
    

    在 /folder_live/.htaccess 中:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^(.*?)(?:folder_live)
    RewriteRule .* %1folder/$0 [E=THEME:live]
    

    您需要代码库文件夹中的 SetEnvIf 指令,因为 mod_rewrite 设置的环境变量总是以 REDIRECT_ 为前缀,这需要从 REDIRECT_THEME 到 THEME 的最终转换。

    您还可以将它们合并到上述目录中的单个 .htaccess 文件中(在本例中为第四级),如果您出于其他原因不需要它们,则可以删除 folder_dev 和 folder_live 目录:

    SetEnvIf REDIRECT_THEME (.*) THEME=$1
    
    RewriteEngine On
    RewriteRule ^folder_dev/(.*)$ folder/$1 [E=THEME:dev]
    RewriteRule ^folder_live/(.*)$ folder/$1 [E=THEME:live]
    
    # Alternatively just:
    # RewriteRule ^folder_([^/]+)/(.*)$ folder/$2 [E=THEME:$2]
    

    【讨论】:

    • 在查找/folder 时出现问题,需要与当前文件夹相对,而不是从域根目录。这一切都将放在第 5 级文件夹中。
    • @Pentium10 我已经更新了这两个选项,现在对相对路径更加友好,希望这会有所帮助。
    猜你喜欢
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2011-09-13
    相关资源
    最近更新 更多