HTACCESS重定向从www.url.com到www.url.com/home

时间:2013-05-27 19:20:25

标签: .htaccess

我正在使用以下htaccess文件来实现一些重定向等:

RewriteEngine On

Options +FollowSymLinks 
RewriteEngine on

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.myurl.com/$1 [R,L]

RewriteRule ^$ /home [R=301,L]

最近我添加了最新一行,因此当用户访问https://www.myurl.com时,他会被重定向到主页的https://www.myurl.com/home。这可以正常工作,但我有一种不好的感觉,这应该以某种方式写得更好。我不喜欢^ $部分,但它有效。我怎么能改写这个?

1 个答案:

答案 0 :(得分:1)

HTTPS部分绝对可以重写,并且应该在您创建多个重定向时首先出现。

RewriteEngine On

Options +FollowSymlinks 
RewriteBase /

#redirect all traffic looking for a domain not starting with www &
#all non-https traffic to the https://www domain
RewriteCond %{HTTPS} off
#This condition is better for analytics tracking and SEO (single subdns)
RewriteCond %{HTTP_HOST} !^www\. [OR]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteRule ^index\.php$ - [L]

RewriteRule ^$ home [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

由于您的MVC可能使用index.php来处理所有请求,因此除非您在不请求任何文件(仅限root)的情况下访问网站,否则重定向到/home的行为可能无效。如果有人明确要求https://www.myurl.com/index.php您的规则RewriteRule ^index\.php$ - [L]告诉网站不要更改任何内容。既然你说这是按预期工作的,我没有改变顺序。

如果它无法正常工作,请切换/home

规则的顺序
RewriteRule ^$ home [R=301,L]
RewriteRule ^index\.php$ - [L]