我将网站重命名为约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 ...
答案 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个重定向中完成。