1

我正在向站点添加一些 301 重定向,我使用的语法几乎适用于所有重定向,除了少数。在我看来,我使用的语法适用于某些人而不适用于其他人,这似乎很不寻常。

一个例子是:

RedirectMatch 301 /faqs/general(.*) /general-faq/$1

这会正确重定向到指定的文件夹,但是:

RedirectMatch 301 /faqs/program(.*) /general-faq/$1

这将重定向到文件夹 /program/

什么是交易?

我使用 Wordpress 作为 CMS,我已将这些重定向包含在htaccess文件中的正确位置。被注释掉的重定向是被破坏的重定向。

    # BEGIN Wordpress

# WPhtc: Begin Custom htaccess
Options +FollowSymLinks

RewriteRule ^academics/courses.*$ http://www.bridgesboysacademy.com/course-curriculum/ [R=301,L]

RedirectMatch 301 /emotional(.*) /emotional-growth/$1

RedirectMatch 301 /emotional/family(.*) /family-participation/$1

RedirectMatch 301 /emotional/community(.*) /community-meetings/$1

RedirectMatch 301 /campus/athletics(.*) /sports-recreation/$1

RedirectMatch 301 /emotional/adventure(.*) /outdoor-adventure/$1

#RedirectMatch 301 /emotional/addiction(.*) /addiction-studies/$1

RedirectMatch 301 /student(.*) /student-profile/$1

#RedirectMatch 301 /student/questionnaire(.*) /student-profile/$1

RedirectMatch 301 /campus(.*) /campus-life/$1

#RedirectMatch 301 /campus/schedule(.*) /daily-schedule/$1

RedirectMatch 301 /faqs(.*) /general-faq/$1

RedirectMatch 301 /faqs/general(.*) /general-faq/$1

#RedirectMatch 301 /faqs/program(.*) /general-faq/$1

RedirectMatch 301 /faqs/academic(.*) /general-faq/$1

RedirectMatch 301 /campus(.*) /campus-life/$1

#RedirectMatch 301 /admissions(.*) /admissions-faq$1
#RedirectMatch 301 /admissions/application(.*) /admissions-faq$1
#RedirectMatch 301 /admissions/testimonials(.*) /admissions-faq/$1
#RedirectMatch 301 /admissions/fees(.*) /admissions-faq/$1
#RedirectMatch 301 /admissions/financial(.*) /admissions-faq/$1
#RedirectMatch 301 /faqs/tuition(.*) /admissions-faq/$1

RedirectMatch 301 /about/facts(.*) /about$1

RedirectMatch 301 /about/accreditations(.*) /accreditation$1

RedirectMatch 301 /about/staff(.*) /staff$1

RedirectMatch 301 /academics/bios(.*) /staff$1

RedirectMatch 301 /about/careers(.*) /career-opportunities$1

RedirectMatch 301 /parents(.*) https://crm.bestnotes.com/portal/bridgesacademy$1
# WPhtc: End Custom htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END Wordpress
4

1 回答 1

0

你有这些重定向向后:

RedirectMatch 301 /faqs(.*) /general-faq/$1

RedirectMatch 301 /faqs/general(.*) /general-faq/$1

#RedirectMatch 301 /faqs/program(.*) /general-faq/$1

RedirectMatch 301 /faqs/academic(.*) /general-faq/$1

第一个重定向将匹配其他 3 个所做的任何事情,所以本质上,最后 3 个什么都不做。您需要将最通用的(第一个)放在最后:

RedirectMatch 301 ^/faqs/general(.*) /general-faq/$1
RedirectMatch 301 ^/faqs/program(.*) /general-faq/$1 
RedirectMatch 301 ^/faqs/academic(.*) /general-faq/$1
RedirectMatch 301 ^/faqs/(.*) /general-faq/$1

您还应该^在模式的开头添加一个。这样,它不会随机匹配路径中更远的东西,例如/something/faqs/something/

此外,您需要更改“情绪化”的行为以使其表现相同:

RedirectMatch 301 ^/emotional/family(.*) /family-participation/$1
RedirectMatch 301 ^/emotional/community(.*) /community-meetings/$1
RedirectMatch 301 ^/emotional/adventure(.*) /outdoor-adventure/$1
RedirectMatch 301 ^/emotional/(.*) /emotional-growth/$1

请注意,我/在最后一个重定向中的“情感”末尾添加了一个。您需要对其他一些重定向执行相同的操作:

RedirectMatch 301 ^/student/(.*) /student-profile/$1
RedirectMatch 301 ^/campus/(.*) /campus-life/$1

您还应该^在模式的开头添加一个。

于 2013-08-29T22:43:40.260 回答