.htaccess似乎在Last flag之后继续

时间:2014-05-11 16:56:51

标签: .htaccess

在我正在制作的小型投资组合网站中,我想拥有干净的网址。为此,我使用.htaccess文件。目前我的网站运行在127.0.0.1/website。我的.htaccess看起来像这样:

RewriteEngine On

RewriteBase /website

RewriteRule ^about$ index.php?page=0 [L,NC]
RewriteRule ^portfolio$ index.php?page=1 [L,NC]
RewriteRule ^cv$ index.php?page=2 [L,NC]
RewriteRule ^contact$ index.php?page=3 [L,NC]

RewriteRule ^.*$ about [L,R]

如果我删除最后一行,一切正常。我可以转到127.0.0.1/website/about,服务器会显示127.0.0.1/website/index.php?page=0,而网址不会更改。但是,我希望每个其他网址都被重定向到127.0.0.1/website/about,我尝试用最后一行做到这一点。但是,如果我现在尝试转到127.0.0.1/website/anything,其中包含任何字符串,则会将我重定向到127.0.0.1/website/about?page=0。除此之外,我希望127.0.0.1/website/about处理正常,因为第一个重写规则的Last标志,但是这会将我重定向到同一个坏网址。

我无法理解为什么这不起作用,而且很困惑,因为对我而言似乎它正在跳过最后一面旗帜。我希望有人可以指出我做错了什么。提前谢谢。

2 个答案:

答案 0 :(得分:1)

最后一条规则会重写所有内容,因此模式必须更加具体

RewriteRule !^index\.php$ about [L,R]

答案 1 :(得分:1)

这可能有效:

RewriteEngine On

RewriteBase /website

RewriteRule ^about$ index.php?page=0 [L,NC]
RewriteRule ^portfolio$ index.php?page=1 [L,NC]
RewriteRule ^cv$ index.php?page=2 [L,NC]
RewriteRule ^contact$ index.php?page=3 [L,NC]

RewriteCond %{REQUEST_URI}  !^/cv        [NC]
RewriteCond %{REQUEST_URI}  !^/about     [NC]
RewriteCond %{REQUEST_URI}  !^/contact    [NC]
RewriteCond %{REQUEST_URI}  !^/portfolio  [NC]
RewriteRule ^.*$ /about [R,L]

它会将不是/cv/about/contact/portfolio的所有内容重定向到/about

相关问题