mod_rewrite前缀作为文件夹

时间:2011-02-27 19:43:45

标签: apache .htaccess mod-rewrite apache2

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

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

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

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

我已尝试过以下代码,但重定向无法正常工作。请求子文件夹时,它会重定向到前缀,但我不知道如何防止循环(请帮忙! /folderx/subfolder/subsubfolder/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]

1 个答案:

答案 0 :(得分:1)

RewriteRule ^folderx/(.+)$ http://example.com/folder_$1 [nc,last,redirect]
RewriteRule ^folderx_(.+)$ /folderx/$1 [nc]