我正在使用以下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。这可以正常工作,但我有一种不好的感觉,这应该以某种方式写得更好。我不喜欢^ $部分,但它有效。我怎么能改写这个?
答案 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]