使用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>
有什么想法吗?
答案 0 :(得分:0)
Trick是让RewriteBase使用/
指向root。在$DOCUMENT_DIR
下的根.htaccess中考虑这样的代码:
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个虚拟目录。