Apache 301重定向添加语言前缀(如果不存在)

时间:2016-11-29 11:37:05

标签: regex apache .htaccess redirect mod-rewrite

"{}"
// POST http://localhost:8181/empty
// HTTP/1.1 200 OK
// Server: spray-can/1.3.4

因此,这个会将所有流量从test.hemsida.eu重定向到RewriteEngine on RewriteCond %{HTTP_HOST} ^test\.hemsida\.eu$ [OR] RewriteCond %{HTTP_HOST} ^www\.test\.hemsida\.eu$ RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$ RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$ RewriteRule ^(.*)$ "https\:\/\/testar\.se\/sv/$1" [R=301,L]

但问题是如果test.hemsida.eu在路径中包含sv,它会重定向:https://testar.se/sv/$1

如果网址中没有sv,我怎么能摆脱一个sv,但仍然保留它?

1 个答案:

答案 0 :(得分:0)

您可以通过调整正则表达式来使用它:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(?:www\.)?test\.hemsida\.eu$ [NC]
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$ [NC]
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$ [NC]
RewriteRule ^(?:sv/)?(.*)$ https://testar.se/sv/$1 [NC,NE,R=301,L]
模式开头的

(?:sv/)?(可选匹配)将确保您始终捕获/sv/之后的任何内容,或者如果没有/sv/则完全匹配。