2013-04-25 103 views
1

我不想手动设置每个站点的.htaccess中的RewriteBase。我如何设置它的相对位置,因此将站点根移动到新位置不需要对其进行任何修改。如何避免“RewriteBase”

我已经阅读了这个http://michael.orlitzky.com/articles/avoiding_rewritebase_with_mod_rewrite.php,但它似乎不适用于.htaccess文件。下面是一个例子htaccess:避免修改RewriteBase在不同的设置是使用符号链接创建同名的链接的目录每一个地方

AddDefaultCharset UTF-8 

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /test 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L] 
</IfModule> 
+0

为什么你需要在第一个地方RewriteBase? – 2013-04-25 08:55:55

+2

你需要mod_rewrite来设置漂亮的URL,但为什么你需要设置RewriteBase?你能举一个例子吗? – 2013-04-25 09:31:11

+0

您可以发布您现有的htaccess代码,以便我们可以查看是否有可能在不使用RewriteBase的情况下重写它? – megaflop 2013-04-25 15:05:10

回答

1

的一种方式。并确保你有这个选项设置在顶部:

Options +FollowSymLinks 
+0

谢谢,我不明白这一点。这意味着什么:“符号链接来创建相同的名称链接目录”。在添加该选项后,我应该完全擦除“RewriteEngine On”吗?我应该使用特殊的目录结构吗? – PHPst 2013-04-26 03:20:53

+0

@PHPst:不需要删除'RewriteEngine'行。通过符号链接,我的意思是'* nix'中的这个命令:'ln -s mysite site1',其中'site1'是您拥有所有站点文件的实际目录。现在mysite将象征性地链接到'site1'文件夹。然后在'site1/.htaccess'里面可以使用'RewriteBase mysite'。在另一个站点上,您可以使用'ln -s mysite site1'和**创建另一个符号链接,并且不需要更改.htaccess **内的任何内容。 – anubhava 2013-04-26 04:02:38