htaccess - 重定向到另一个页面

时间:2016-08-12 09:38:26

标签: php apache .htaccess redirect mod-rewrite

我的htaccess文件有问题。它将页面重定向到root,即index.php

例如: 如果我使用http://domain.com/jobs或domain.com/jobs等网址将其重定向页面发送到www.domain.com/index.php
但如果我使用www.domain.com/jobs,则不会将页面重定向到其他页面。
以下是我使用的htaccess代码

    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews
        </IfModule>

        RewriteEngine On

        # Redirect Trailing Slashes...
        RewriteRule ^(.*)/$ /$1 [L,R=301]

        # Handle Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]

    RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
</IfModule>

1 个答案:

答案 0 :(得分:2)

[L]标志是Last的快捷方式,它告诉mod_rewrite在匹配此规则后停止处理规则。

处理了

RewriteRule ^ index.php [L]规则并将您的请求重定向到index.php,在此之后省略了规则。

解决方案是 - 更改规则的顺序。它应该是这样的:

    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews
        </IfModule>

        RewriteEngine On


    RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

        # Redirect Trailing Slashes...
        RewriteRule ^(.*)/$ /$1 [L,R=301]

        # Handle Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
</IfModule>

它将被重定向到www.domain.com,然后将执行其他规则检查。