2016-09-29 33 views
1

想我再也网址如何重写一个URL的一部分

http://www.example.com/se/products/details/23 
http://www.example.com/se/company/about 
http://www.example.com/se/customers/europe/john-doe 
etc. 

我希望他们rewrite

http://www.example.com/en/products/details/23 
http://www.example.com/en/company/about 
http://www.example.com/en/customers/europe/john-doe 
etc 

这意味着不管用什么语言自带他们rewrited到en,他们看到他们各自的语言在地址栏中,但页面正在从服务器'en'

我的规则是这样的

# Pass through the original path as a query parameter, and retain the existing parameters. 
    RewriteCond %{REQUEST_URI} ^(.*)$ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule .* framework/main.php?url=%1 [QSA] 

    RewriteRule ^se/(.+?)\/?$ /en/$1 [L] 

该项目基于SilverStripe框架。

而且这也没有工作,显示404页未找到错误

我们怎样才能做到这一点?

+0

“这没有工作”。怎么了?你能告诉我们重写日志吗? – undone

+0

@undone,它显示404页未找到错误 – WatsMyName

+0

如何重写日志?你可以把日志放在这里吗? – undone

回答

1

重新排序规则和有它这样的:

RewriteEngine On 

RewriteRule ^se(/.*)?$ en$1 [L,NC] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^framework/main.php?url=%{REQUEST_URI} [L,QSA] 
+1

这个工程,谢谢你的伙计:) – WatsMyName

0

尝试像这样,

Options -MultiViews 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^se/(.+?)\/?$ /en/$1 [L] 

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

这没有奏效,第一个给500错误,第二个导致你404错误。 – WatsMyName

+0

两件事,我假设你在根中应用这些规则,其次你必须处理重写的en /文本/文本与其他一些内部重写原始URL前'page.php?lang?= en&detail = 23'检查或提供原始网址。 –

+0

其实这个项目是基于'SilverStripe'框架的,所以没有原始的URL,因为你已经指定了。 Silverstripe有自己的路由路径。 – WatsMyName