如果文件不存在,则重定向到根目录 [英] Redirect if file does not exists to root

查看:181
本文介绍了如果文件不存在,则重定向到根目录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个超级基本的重定向请求,我想完成,但是每次尝试都将其弄乱,到目前为止,最好的结果是双www.www重定向( http://www.www.domain.tld/

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站点 http://www.domain.tld/123456789.html

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.

这篇关于如果文件不存在,则重定向到根目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆