0

我有以下文件夹结构:

  • www-根
    • 后端
      • 配置
      • ETC
    • 前端
      • 行政
      • 店面

我希望能够从主 url 访问目录并隐藏其间的子目录。

所以我应该能够像这样访问管理部分:

 http://localhost/Administration/

存储在子目录“StoreFront”中的主页,我希望能够从根目录访问:

 http://localhost

到目前为止,这是我的 .htaccess 文件中的代码:

# Store Redirect
RewriteEngine on
RewriteCond %{HTTP_HOST} ^localhost [NC]
RewriteCond %{REQUEST_URI} !^/Frontend/StoreFront
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /Frontend/StoreFront/$1
RewriteCond %{HTTP_HOST} ^localhost [NC]
RewriteRule ^(/)?$ /Frontend/StoreFront/index.php [L]
RewriteCond %{REQUEST_URI} !^/Administration
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /Frontend/Administration/$2

但是,此代码无法正常工作。它将除 index.php 文件之外的所有文件重写到 Administration 子目录。附注:后端目录中的 php 文件应从前端保持“可包含”。

4

1 回答 1

1

让我提前告诉你,你想要实现的任务是不可能完成的,现在让我告诉你为什么。你有这个规则:

RewriteRule ^(.*)$ /Frontend/StoreFront/$1

再往下,你有:

RewriteRule ^(.*)$ /Frontend/Administration/$2

你不可能.*两个地方都去。您需要以某种方式区分这两条路径。

除此之外,您还有其他问题,例如:

  1. 在需要的地方不使用L(LAST) 标志
  2. 在第二条规则中使用$2而不是$1

编辑:根据您的评论:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^(Administration(?:/.*|))$ /Frontend/$1 [L,NC]

RewriteCond %{HTTP_HOST} ^localhost [NC]
RewriteRule ^$ /Frontend/StoreFront/index.php [L]

RewriteCond %{HTTP_HOST} ^localhost [NC]
RewriteCond %{REQUEST_URI} !^/Frontend/StoreFront
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /Frontend/StoreFront/$1 [L]
于 2013-05-16T12:15:37.660 回答