规范的rewriterule定制

时间:2015-02-12 22:07:07

标签: apache .htaccess mod-rewrite

这是我现在在htaccess文件中使用的代码。

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|webp|html)(\.gz)?(\?.*)?$"> 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTPS} !=on
RewriteRule .* - [E=CANONICAL:http://%{HTTP_HOST}%{REQUEST_URI},NE]
RewriteCond %{HTTPS} =on
RewriteRule .* - [E=CANONICAL:https://%{HTTP_HOST}%{REQUEST_URI},NE]
</IfModule>
<IfModule mod_headers.c> 
Header set Link "<%{CANONICAL}e>; rel=\"canonical\"" 
</IfModule> 
</FilesMatch>

我要做的是让规范在这里与HTTP_HOST不同。

我们只是说HTTP_HOST现在是example.com/es/但我需要这个规范是example.com/en /

如何使用上面的代码进行修改以重写规范的URL以反映example.com/en/

1 个答案:

答案 0 :(得分:0)

试试这个:

<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteCond %{HTTPS}s ^on(s)|off
RewriteCond http%1://%{HTTP_HOST}%{REQUEST_URI} ^(.*?)/es/(.*)$ [NC]
RewriteRule .* - [E=CANONICAL:%1/en/%2,NE,S=1]

RewriteCond %{HTTPS}s ^on(s)|off
RewriteRule .* - [E=CANONICAL:http%1://%{HTTP_HOST}%{REQUEST_URI},NE]
</IfModule>