子目录中的.htaccess - 如何使用RewriteBase

时间:2017-03-29 09:32:22

标签: apache .htaccess mod-rewrite server apache2

我正在尝试以下方法。

我有这个目录结构,可在我们的网络中找到,地址为xxx.xxx.xxx.xxx

root
    -dir1
    -dir2
    -dir3

现在在我的dir1文件夹中,我有一个使用以下.htaccess文件的网站

RewriteEngine On
RewriteBase /dir1/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]

在我的网站上,我使用前面的“/”链接源和页面,例如“/ details”或“/css/app.css”

问题是,由于前面的“/".

,链接总是转到根文件夹

如何在不必编辑所有链接和来源的情况下使链接“保留”在子目录中?

我尝试过使用

RewriteBase /
RewriteBase /dir1
RewriteBase /dir1/
RewriteBase dir1

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

RewriteBase不会改变任何内容,因为它仅适用于相对路径目标。

  

RewriteBase指令指定用于替换相对路径的每个目录(htaccess)RewriteRule指令的URL前缀

由于您的目标已经是绝对/index.php,因此您可以完全省略RewriteBase

从给定的.htaccess中,似乎index.php返回所请求的文件。所以在这种情况下,我只是在路径前面加上适当的目录,例如

RewriteRule ^(.*)$ /index.php?path=/dir1/$1 [NC,L,QSA]

或者可能提供一个额外的参数,如果这对脚本更好用,比如

RewriteRule ^(.*)$ /index.php?path=$1&subdir=dir1 [NC,L,QSA]