Mod Rewrite从Concrete5 cms中的url中删除语言

时间:2015-04-22 20:01:23

标签: .htaccess mod-rewrite url-rewriting seo concrete5

我完全难过了。希望你能帮忙。我花了一个月的时间在Concrete5版本7.3.1,最新版本中重新开发我们的网站,我准备推出了。这是一个多语言的网站,我们的SEO人员建议不要在默认语言的URL中包含该语言(英语),因为它会将我们的主页从domain.com/更改为domain.com/en/,而我们的旧网站默认语言在基本目录中。

Concrete5不支持这一点,所以基本上我希望用一些.htaccess技巧来实现这一点,但我没有得到任何结果。

Concrete5网址是domain.com/index.php/en/path/to/page,因此所有网页都以index.php为主。有一个重写规则如下,以隐藏用户的index.php并使网址漂亮。

#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME}/index.html !-f
#RewriteCond %{REQUEST_FILENAME}/index.php !-f
#RewriteRule . index.php 

我想进一步添加一种方法,从不包含它的网址添加服务器端的/ en /。即。

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

因此我可以从网址中删除en,系统仍然有效。

我已经尝试在具体的重写(没有index.php),之后和多种不同的组合之前放置它,但是不断得到401错误并且很难诊断问题,因为它不容易看到生成的url。

任何帮助都会非常感激,因为我必须在发布前弄明白这一点。

1 个答案:

答案 0 :(得分:1)

新的5.7.4版本中的this recently added event即将推出,我们可以通过请求做一些有趣的事情。我们可以做的一件事是确保该路径上的页面不存在,然后重写请求以使其看起来具体5请求实际进入//Declared Variables $first = $_POST['fname']; $surname = $_POST['sname']; $username= "lemon"; $password= $_POST['password']; $email= $_POST['email']; $Image= "1"; $postcode= $_POST['postcode']; $StoreID= "1"; $DeptNo= "1"; $AccessID= "1"; $GPID= $_POST['GPID']; //Insert Query $query ="INSERT INTO `User`(`UserID`, `First_name`, `Surname`, `Username`, `Password`, `email`, `Image`, `Postcode`, `StoreID`, `DeptNo`, `AccessID`, `GPID`) VALUES (NULL, :fname, :sname, 'NULL',:password,:email, NULL,:postcode,'1','1','1',:GPID)";

/en

我真的建议你不要这样做。正如我在这个问题的评论中所描述的那样,你会遇到一些非常奇怪的案例,会导致你的网站出现SEO问题和一般路由问题。

编辑具体5版本8包含HTTP中间件,这是解决此问题的更好方法。