我正在尝试创建我的第一个 .htaccess 来进行 URL 重写和其他事情,但是我浪费了两天时间搜索信息并试图让它工作但没有成功。
我想要达到的目标如下:
1)将所有非www URL重定向到www URL(这似乎是seo的最佳实践?)
domain.com --> www.domain.com
2)将所有https请求重定向到http请求:
https://www.domain.com --> http://www.domain.com
https://domain.com --> http://www.domain.com
3) 将我的 URL 重写为对 SEO 友好,并最终去掉地址末尾的任何尾随斜杠:
www.domain.com/abc --> www.domain.com/index.php?page=abc
www.domain.com/abc/ --> www.domain.com/abc
到目前为止,我所拥有的是三个单独工作的片段:
# 1) This should be correct, I hope!
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# 2) This seems to work 100% right
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R,L]
#3) Major issues here
RewriteEngine On
RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [L]
这部分有效:它可以满足我的要求,但是当我在 SEO 友好 URL 之后放置一个斜杠时,我会破坏所有相对路径:
www.domain.com/abc OK
www.domain.com/abc/ page gets displayed but all relative URL for css and images are broken
我什至不知道如何在单个 htaccess 文件中组合不同的规则以使它们正确交互。
抱歉,解释太长了,这个问题让我感到非常沮丧。