0

使用 htaccess 文件在 Apache 上遇到一些问题。我有一个脚本需要从两个不同的虚拟子目录访问,这两个虚拟子目录都指向同一个地方。

问题是当我将重写基础设置到一个位置并尝试从另一个位置访问时,它上面有错误的变量。因为它是一个虚拟目录,所以只有一个 .htaccess 文件,所以我需要一种方法让我的 htaccess 文件知道它在访问脚本时被调用的目录,以便我可以将脚本中的重写基础设置为适当的虚拟目录。

我正在为此绞尽脑汁。这是我的代码不起作用。我尝试了一些变化,我觉得我很接近,但我很难过。

            Options -Indexes
            Options +FollowSymLinks
            ErrorDocument 404 index.php

            <IfModule mod_rewrite.c>
              RewriteEngine on

              RewriteCond %{DOCUMENT_ROOT} /$1 -f 
                RewriteBase /$1/


              RewriteCond %{REQUEST_FILENAME} !-f
              RewriteCond %{REQUEST_FILENAME} !-d
              RewriteCond %{REQUEST_URI} !=/favicon.ico
              RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
            </IfModule>

有任何想法吗?

4

1 回答 1

0

诀窍是让 RewriteBase 使用/. 在你的根 .htaccess 中考虑这样的代码$DOCUMENT_DIR

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

ErrorDocument 404 index.php

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]

RewriteRule ^(?:vdir1|vdir2)/(.*)/?$ index.php?q=$1 [L,NC,QSA]

这里 vdir1 和 vdir2 是你的 2 个虚拟目录。

于 2012-05-18T19:59:13.883 回答