Htaccess规则修改URLpath

我的一个客户有一个网站,作为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 ”。

所以,

  1. 更改应用程序中的URL结构。

既然你已经有一个前端控制器(即所有的东西都通过index.php来传递请求),那么在.htaccess没有什么需要改变的。 但是,您的前端控制器( index.php等)需要修改以处理新的URL格式。

  1. 更新你的前端控制器。

一旦您的应用程序工作正常,使用新的URL结构,那么您可以在.htaccess实现一个外部redirect,以将/path/to/pageredirect到/pl/path/to/page 。 这是为了search引擎和任何链接到旧URL的入站链接/书签的好处。

  1. 将所有请求redirect到新的URL格式。

例如,在您现有的内部重写(前端控制器)之前和您的规范www到非wwwredirect之后,您可以执行如下操作:

 RewriteCond %{REQUEST_URI} /(.*) RewriteRule !^pl/ /pl/%1 [R=301,L] 

如果请求的URL不以/pl/开头,则将其前缀添加到URL并redirect。

保存英文版未来站点版本的根path。

这将是一个潜在的问题,因为你必须redirect所有的根请求到/pl/...在过渡期间和一些/许多现有的入站链接可能不会得到更新。 当您在根目录中实施英文版本时,您将需要禁用redirect,或仅智能地redirect所需的URL。 或者,用/en/前缀实现英文版本?