.htaccess重写规则,友好的URL +重定向

时间:2015-03-30 17:36:45

标签: apache .htaccess mod-rewrite redirect url-rewriting

我正在使用.htaccess来获取如下所示的网址:

/index.php?page=2

并将它们重写为,例如:

/contact-us

我想做两件事:

加载/与我们联系时,请显示页面/index.php?page=2,但请保留友好的网址。我知道这看起来像:

RewriteRule ^contact-us$ "index\.php\?page\=2" [L]

哪个确实有效。但是现在我也希望导航到/index.php?page=2的人最终/联系我们 - 如何将301重定向与友好的URL重写相结合?

2 个答案:

答案 0 :(得分:0)

不确定为什么在重写规则的目标部分使用引号和转义符。目标部分不是正则表达式。这可以简单地看起来像:

RewriteRule ^contact-us$ /index.php?page=2 [L]

要重定向index.php?page = 2,您需要执行以下操作。这个规则必须在上面的规则之前,否则你将进入重写循环。

RewriteCond %{REQUEST_URI}  ^/index\.php$
RewriteCond %{QUERY_STRING} ^page=2$
RewriteRule .* /contact-us [R=301,L]

这里设置两个重写条件:页面为/index.php,查询字符串为page=2(仅page=2)。 R=301标志将强制外部重写/ contact-us并发送和HTTP 301标头。

答案 1 :(得分:0)

您可以在DOCUMENT_ROOT/.htaccess文件中使用此代码:

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} /index\.php\?page=2[&\s] [NC]
RewriteRule ^ contact-us? [R=302,L,NE]

RewriteRule ^contact-us/?$ index.php?page=2 [L,QSA,NC]