【问题标题】:mod_rewrite prefix as a foldermod_rewrite 前缀作为文件夹
【发布时间】:2011-02-27 19:43:44
【问题描述】:

我的主目录中有这个结构:

  • /index.php
  • /.htaccess
  • /文件夹x/
  • /folderx/子文件夹/
  • /folderx/subfolder/file.php

我需要的是将所有带有前缀“folderx_”的请求修改为真正的folderx目录。但另外,我需要强制重定向 - 用户不应该直接请求 /folderx/subfolder/subsubfolder/file.php 。它应该被重定向到 mod_rewrite url:/folderx_subfolder/subsubfolder/file.php

  • /folderx_subfolder/ => /folderx/subfolder/
  • /folderx_subfolder/file.php => /folderx/subfolder/file.php
  • /folderx_subfolder/subsubfolder/ => /folderx/子文件夹/子子文件夹/
  • /folderx_subfolder/subsubfolder/file.php => /folderx/subfolder/subsubfolder/file.php

我已尝试以下代码,但重定向无法正常工作。请求子文件夹时,它重定向到前缀,但我不知道如何防止循环(请帮助! /folderx/子文件夹/子子文件夹/file.php

RewriteCond %{REQUEST_URI} ^/folderx/(.*)$
RedirectMatch ^/folderx/(.*)$ /folderx_$1
RewriteRule ^folderx_([a-z]{3,15})(/?)+$ /folderx/$1/ [NC]
RewriteRule ^folderx_([a-z]{3,15})/(.*)$ /folderx/$1/$2 [NC]

【问题讨论】:

    标签: apache .htaccess mod-rewrite apache2


    【解决方案1】:
    RewriteRule ^folderx/(.+)$ http://example.com/folder_$1 [nc,last,redirect]
    RewriteRule ^folderx_(.+)$ /folderx/$1 [nc]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 2015-03-16
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多