我完全难过了。希望你能帮忙。我花了一个月的时间在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。
任何帮助都会非常感激,因为我必须在发布前弄明白这一点。
答案 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中间件,这是解决此问题的更好方法。