【发布时间】:2013-01-25 01:39:35
【问题描述】:
我正在尝试创建我的第一个 .htaccess 以进行 URL 重写和其他操作,但我浪费了两天时间搜索信息并试图使其正常工作,但没有成功。
我想要达到的目标如下:
1) 将所有非 www 网址重定向到 www 网址(这似乎是 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) 将我的网址重写为对 SEO 友好,并最终去除地址末尾的任何尾随斜杠:
www.domain.com/abc --> www.domain.com/index.php?page=abc
www.domain.com/abc/ --> www.domain.com/abc
到目前为止,我所拥有的是三个单独工作的 sn-ps:
# 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 文件中组合不同的规则以使它们正确交互。
对不起,解释太长了,这个问题让我很沮丧。
【问题讨论】:
标签: apache .htaccess url redirect rewrite