我想在现有的.htaccess文件中添加一些.htaccess知识(参见https://github.com/silverstripe/silverstripe-installer/blob/master/.htaccess):
<IfModule mod_rewrite.c>
SetEnv HTTP_MOD_REWRITE On
RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* framework/main.php?url=%1 [QSA]
</IfModule>
因此,如果网址以nz / au / us开头,那么第一段将从&#34; url-get变量&#34;中移除。创建并添加为自己的get变量。
e.g。
[域名到此处] / nz / my / page / is / here /
被重定向到:
?main.php URL = /我/页/是/在这里/&放大器;国家= NZ
[域名到此处] / au / my / other-page / is / here /
被重定向到:
?main.php URL = /我的/其它页面/是/在这里/&放大器;国家= AU
[域名到此处] / my / third-page / is / here /
被重定向到:
main.php?URL = /我的/第三页/是/在这里/
答案 0 :(得分:3)
您可以这样做:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(nz|au|us)/?(.*)$ framework/main.php?url=$2&country=$1 [NC,L]
请注意,这会使国家/地区代码成为网址的强制性部分,您可能必须为您生成的所有链接添加前缀。 当然,你总是可以在下面添加原始重写规则作为后备。所以你的完整规则将如下所示:
# Match URL with country code
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(nz|au|us)/?(.*)$ framework/main.php?url=$2&country=$1 [NC,L]
# Fallback to original rewrite-rule
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* framework/main.php?url=%1 [QSA]