.htaccess重定向,如果文件存在于子文件夹中

时间:2014-10-17 20:58:05

标签: apache .htaccess mod-rewrite redirect

我有以下挑战。假设从服务器请求以下文件: /pages/subfolder/mypage.php

是否有使用mod-rewrite的选项来执行以下操作:

  

查看特定文件夹f。即如果所请求的文件(和结构)存在,则为/ USERMOD

     

如果是,请使用所有参数执行此文件

     

如果不是,请执行请求的文件。

背景是重写会查看/ USERMOD下的替换是否具有相同的文件夹结构。如果存在替换,请使用此文件,否则使用原始文件。

实际上(但没有工作)我有:

RewriteCond %{REQUEST_URI} !^/USERMOD/ [NC]
RewriteCond %{DOCUMENT_ROOT}/USERMOD/$1 -f [NC]
RewriteRule ^(.*)$ /USERMOD/$1 [L]

感谢任何提示和帮助!

编辑:完整的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/USERMOD/ [NC]
RewriteCond %{DOCUMENT_ROOT}/USERMOD/$1 -f [NC]
RewriteRule ^(.*)$ /USERMOD/$1 [L]

RewriteCond %{REQUEST_FILENAME} ^(.*)\.(php|css|js|gif|jpg|jpeg|png)$ [NC]
RewriteRule ^(.+) - [L]

RewriteCond %{REQUEST_URI} (.*)?/admin/(.*)
RewriteRule ^(.+) - [L]

RewriteCond %{REQUEST_URI} (.*)?/images/(.*)
RewriteRule ^(.+) - [L]

RewriteCond %{REQUEST_URI} (.*)?/templates/(.*)
RewriteRule ^(.+) - [L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [L]

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+) - [L]

RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^(.+) - [L]

##boosted CONTENT
RewriteRule (.*/)?info/([A-Za-z0-9_-]+)\.html.* shop_content.php?gm_boosted_content=$2&%{QUERY_STRING} [PT,L]

##boosted PRODUCTS
RewriteRule (.*/)?([A-Za-z0-9_-]+)\.html product_info.php?gm_boosted_product=$2&%{QUERY_STRING} [PT,L]

##boosted CATEGORIES
RewriteRule (.*/)?([A-Za-z0-9_-]+)/?.* index.php?gm_boosted_category=$2&%{QUERY_STRING} [L]

1 个答案:

答案 0 :(得分:5)

有这样的初始规则:

RewriteEngine On

RewriteRule ^USERMOD/ - [NC,L]

RewriteCond %{DOCUMENT_ROOT}/USERMOD/$1 -f [NC]
RewriteRule ^(.*)$ /USERMOD/$1 [L]

# rest of your rules come here