问题描述
我有一个超级基本的重定向请求,我想完成,但是每次尝试都将其弄乱,到目前为止,最好的结果是双www.www重定向()
I have a super basic redirect request I like to get done, but i mess it up every time i give it a try, the best so far results in a double www.www redirect (http://www.www.domain.tld/)
我的。 htaccess有两个规则,我想检查并完成。
My .htaccess has 'two' rules i like to get checked and done.
第一:将所有不存在的文件重定向到根文件夹
1st: Redirect all non existent files to the root folder
2nd:添加www。如果域请求为非www
2nd: Add www. if domain requested as non-www
# If requested resource exists as a file or directory go to it
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*) - [L]
# Else rewrite requests for non-existent resources to /index.php
RewriteRule (.*) http://www.%{HTTP_HOST}/? [L]
#Rewrite for non www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/? [R=301,L]
我更改了第一个规则集,但从未解决
I have changed the first Ruleset, but never worked out
否。 1
# If requested resource exists as a file or directory go to it
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*) - [L]
# Else rewrite requests for non-existent resources to /index.php
RewriteRule (.*) http://%{HTTP_HOST}/? [L]
以redirectloop结尾
Ended with a redirectloop
没有2
# If requested resource exists as a file or directory go to it
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*) - [L]
# Else rewrite requests for non-existent resources to /index.php
RewriteRule (.*) /? [L]
以没有给出任何规则的方式结束。.因此,URL不变的错误404站点
Ended like no rule was even given.. so an error 404 site with the unchanged URL http://www.domain.tld/123456789.html
我在哪里走错路了?
推荐答案
您不能使用 http :// 进行静默重写,否则
mod_rewrite
会将其转换为外部重定向。规则如下:
You cannot use
http://
while doing silent rewrite otherwise mod_rewrite
will convert that to an external redirect. Have your rules like this:
DirectoryIndex index.php
RewriteEngine On
#Rewrite for non www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# If requested resource is not a file or directory then redirect to /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [L,R=302]
请务必在测试之前清除浏览器缓存。
Make sure to clear your browser cache before testing this.
这篇关于如果文件不存在,则重定向到根目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!