我有一个超级基本的重定向请求,我想完成,但是每次尝试都将其弄乱,到目前为止,最好的结果是双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 (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 (.*) www.%{HTTP_HOST}/? [L] #Rewrite for non www RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ 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_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 www.domain.tld/123456789.html
我在哪里走错路了?
推荐答案您不能使用 http :// 进行静默重写,否则 mod_rewrite 会将其转换为外部重定向。规则如下:
You cannot use 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 ^ 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.
更多推荐
如果文件不存在,则重定向到根目录
发布评论