重写规则htaccess的隐藏的默认语言 [英] RewriteRule for htaccess to hide default language

查看:185
本文介绍了重写规则htaccess的隐藏的默认语言的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Zend的默认配置我有这些规则:

  SETENV APPLICATION_ENV离线RewriteEngine叙述在
选择了FollowSymLinks +
的RewriteCond%{} REQUEST_FILENAME -s [OR]
的RewriteCond%{} REQUEST_FILENAME -l [OR]
的RewriteCond%{} REQUEST_FILENAME -d
。重写规则^ * $ - [NC,L]
重写规则^ * $的index.php [NC,L]

当我尝试添加休耕线,notfing情况:

 重写规则^ EN /(.*)$ 1 [L]

在结果我expact改写permomently http://example.com/en/something 以< A HREF =htt​​p://example.com/something相对=nofollow> http://example.com/something
在我现在有两个链接separatly工作。

编辑:

  SETENV APPLICATION_ENV离线RewriteEngine叙述在
选择了FollowSymLinks +的RewriteCond%{} REQUEST_FILENAME -s [OR]
的RewriteCond%{} REQUEST_FILENAME -l [OR]
的RewriteCond%{} REQUEST_FILENAME -d
。重写规则^ * $ - [NC,L]的RewriteCond%{REQUEST_URI}!^ / EN /
重写规则^ * $的index.php [NC,L]重写规则^恩/(.*)/ $ 1 [L,R]

这将直接重定向默认语言的URL站点根目录!
非常感谢。

有是lighttpd的:

  $ HTTP [网址]!=^ / EN /{
    url.rewrite一次=(
        ^ / *=&GT; 的index.php?/ $ 1,
    )
}
url.redirect =(
    ^ / EN /.*=&GT; / $ 1,


解决方案

这是bceause 重写规则^ * $的index.php [NC,L] 正在改写它,它永远不会给你添加的规则。您需要添加一个条件,使请求开始 / EN / 没有得到改写为index.php文件:

 #你经常东西
RewriteEngine叙述在
选择了FollowSymLinks +
的RewriteCond%{} REQUEST_FILENAME -s [OR]
的RewriteCond%{} REQUEST_FILENAME -l [OR]
的RewriteCond%{} REQUEST_FILENAME -d
。重写规则^ * $ - [NC,L]#添加此条件
的RewriteCond%{REQUEST_URI}!^ / EN /
重写规则^ * $的index.php [NC,L]#现在你可以重写/ EN
重写规则^恩/(.*)$ 1 [L,R]

编辑: example.com/en/something 被重定向到 example.com/something ,然后改写为的index.php

In Zend configuration defaults I have these rules:

SetEnv APPLICATION_ENV offline

RewriteEngine On
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

When i try to add fallowing line, notfing happens:

RewriteRule ^en/(.*) $1 [L]

On result I expact to rewrite permomently http://example.com/en/something to http://example.com/something At now I have both links worked separatly.

Edited:

SetEnv APPLICATION_ENV offline

RewriteEngine On
Options +FollowSymlinks

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteCond %{REQUEST_URI} !^/en/
RewriteRule ^.*$ index.php [NC,L]

RewriteRule ^en/(.*) /$1 [L,R]

This will redirects default language urls directly to site root! Many thanks.

There is for LigHTTPD:

$HTTP["url"] != "^/en/" {
    url.rewrite-once = (
        "^/.*" => "index.php?/$1",
    )
}
url.redirect = (
    "^/en/.*" => "/$1",
)

解决方案

It's bceause RewriteRule ^.*$ index.php [NC,L] is rewriting it and it never gets to the rule you added. You need to add a condition so that requests starting with /en/ don't get rewritten to index.php:

# you regular stuff
RewriteEngine On
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

# Add this condition
RewriteCond %{REQUEST_URI} !^/en/
RewriteRule ^.*$ index.php [NC,L]

# Now you can rewrite /en
RewriteRule ^en/(.*) $1 [L,R]

Edited: example.com/en/something gets redirected to example.com/something, then rewritten to index.php.

这篇关于重写规则htaccess的隐藏的默认语言的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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