HTACCESS:重定向VS RedirectMatch将一个页面重定向到同一个域的另一个页面?

时间:2015-08-05 03:18:01

标签: apache .htaccess redirect

我在这里(下面)有我的HTACCESS文件,我想重定向/付款到/设计/付款只是为了让链接发送到客户端时更容易。

以下是整个文件:

<Files .htaccess>
order allow,deny
deny from all
</Files>

ErrorDocument 404 http://mrobertsdesign.ca/404

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC]
RewriteRule ^ %1 [L,R=301,NC]

RewriteCond %{HTTP_HOST} ^mrobertsonline\.ca [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.mrobertsonline\.ca [NC]
RewriteCond %{HTTP_HOST} ^www\.mrobertsdesign\.ca [NC]
RewriteRule ^(.*)$ http://mrobertsdesign.ca/$1 [L,R=301,NC]

RewriteRule ^([a-zA-Z0-9]+)/?$ index.php?page=$1 [NC]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?category=$1&page=$2 [NC]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?category=$1&subcat=$2&page=$3 [L,NC]

文件工作正常,如果您发现任何应该更改的内容,请告诉我。但它的工作正常,无论如何......

要将页面“/ payments”重定向到“/ design / payments”,我理解我应该使用“redirect”,如下所示:

Redirect 301 /payments /design/payments

但是当我添加它时,它会将我重定向到:

http://mrobertsdesign.ca/design/payments?page=payments

现在我不明白我需要改变什么,这一切都真的,所有的帮助都会受到赞赏!

1 个答案:

答案 0 :(得分:0)

您需要在规则之前添加阻止条件

RewriteRule ^([a-zA-Z0-9]+)/?$ index.php?page=$1 [NC]

她被/payments的请求解雇了,添加了参数,然后Redirect保留了这些添加的参数。

RewriteCond %{REQUEST_URI} !^/payments
RewriteRule ^([a-zA-Z0-9]+)/?$ index.php?page=$1 [NC,QSA]

作为附注,您可能还想在最后3个规则中添加[QSA][1]标志,因为当您在RewriteRule中添加参数时,先前的查询字符串会丢失。

相关问题