我的一个客户有一个网站,作为example.com 。 他希望以example.com/pl的forms提供服务,为未来的英文网站版本保存根path。
我想知道这是否可以使用.htaccess规则。 当前.htaccess如下所示:
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
规则可以改变,以达到客户的期望? 如果是这样,怎么样?
像这样改变URL结构并不是你在.htaccess
应该做的事情。 首先,您仍然需要更改应用程序中的URL结构。 所有的内部链接( href
属性)需要更改为新的URL结构。 即。 如果你以前在HTML中有“ /path/to/page
”,现在需要改成“ /pl/path/to/page
”。
所以,
既然你已经有一个前端控制器(即所有的东西都通过index.php
来传递请求),那么在.htaccess
没有什么需要改变的。 但是,您的前端控制器( index.php
等)需要修改以处理新的URL格式。
一旦您的应用程序工作正常,使用新的URL结构,那么您可以在.htaccess
实现一个外部redirect,以将/path/to/page
redirect到/pl/path/to/page
。 这是为了search引擎和任何链接到旧URL的入站链接/书签的好处。
例如,在您现有的内部重写(前端控制器)之前和您的规范www到非wwwredirect之后,您可以执行如下操作:
RewriteCond %{REQUEST_URI} /(.*) RewriteRule !^pl/ /pl/%1 [R=301,L]
如果请求的URL不以/pl/
开头,则将其前缀添加到URL并redirect。
保存英文版未来站点版本的根path。
这将是一个潜在的问题,因为你必须redirect所有的根请求到/pl/...
在过渡期间和一些/许多现有的入站链接可能不会得到更新。 当您在根目录中实施英文版本时,您将需要禁用redirect,或仅智能地redirect所需的URL。 或者,用/en/
前缀实现英文版本?