htaccess RewriteRule带有可选的语​​言切换功能

时间:2017-12-08 00:30:19

标签: regex .htaccess mod-rewrite url-rewriting

我已设置htaccess RewriteRules来重写,例如"domain.ext/en/page""domain.ext?lang=en&p=page"按预期工作。

但是,我想将语言部分设为可选,因此"domain.ext/page"也会重写为"domain.ext?lang=en&p=page"

这里是htaccess代码:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_REFERER} !^domain.ext/.*$ [NC]

Options +FollowSymlinks

RewriteRule ^$              index.php?lang=en
RewriteRule ^(en|nl)/?$         index.php?lang=$1
RewriteRule ^(en|nl)/([^/]+)/?$         index.php?lang=$1&p=$2

所以我想添加类似的内容:

RewriteRule ^([^/][[NOT (en or nl)]]+)/?$           index.php?lang=en&p=$2

1 个答案:

答案 0 :(得分:1)

您可以尝试以下正则表达式:

^(?!en|nl)([^/]+)/?$

重写"domain.ext/page"也会重写为index.php?lang=en&p=$2

您还可以添加:

^(?!en|nl)[a-z]{2}/([^/]+)/?$

jp/page/fr/page/重写为index.php?lang=en&p=$2

我希望它对你有所帮助。祝你好运: - )