mod_rewrite定位和措辞

时间:2011-06-03 18:44:33

标签: mod-rewrite

我将网站重命名为约50页。我想从旧页面到新页面进行内部重写。这是Apache给出的例子。

RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^foo\.html$  bar.html

我不确定我是否需要rewriteBase /。我只有个人网页(没有潜艇)。 我理解术语“foo”和“bar”和“quux”是例子中的通用词。如果我在此服务器上只有一个域,并且重写规则将应用于根目录,我是否需要包含rewriteBase /rewriteBase /~quux/,还是需要rewriteBase?< / p>

我假设在使用rewriteBase /~quux/时,插入的实际子目录为/~quux/。即使我没有子目录,这是正确的吗?

有人可以安排上面说明的正确脚本吗?

此外,据我所知,此脚本将放在其他.htaccess指令之前,例如非www到www和索引到/。这是对的吗?

RewriteEngine on
Options +FollowSymLinks

#rewrite old to new pages internaly
RewriteBase    /~quux/
RewriteRule    ^foo\.html$  bar.html

#non-www to www
RewriteCond
RewriteRule ...

#index to /
RewriteCond
RewriteRule ...

1 个答案:

答案 0 :(得分:0)

<强> RewriteBase:

如果您的网页如下:

http://mydomain.com/subdir/index.html

并且您的.htaccess文件位于subdir/,然后您需要设置它:

RewriteBase /subdir/

这使您可以使规则忽略子目录,所以

RewriteRule ^old_index.html$ new_index.html

会将subdir/old_index.html重定向到subdir/new_index.html

<强>位:

只有在规则之后没有使用[L]标志时,规则的定位才有意义。此修饰符告诉mod_rewrite停止重写并进行重定向。不使用它将让重写引擎一次性使用您的URL执行所有操作。所以如果你的网址是这样的:

http://mydomain.com/old_index.html

它将转换为

http://www.mydomain.com/new_index.html

无论哪个规则首先出现,添加www的规则。或指向新页面的那个。但是如果有[L]标志,则可以在2个重定向中完成。

相关问题