.htaccess 以相同的方式将使用htaccess输入的url重定向到其他位置

2lpgd968  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(115)

当我输入我的example.com url时,我想重定向到example.com/en/,但当我输入example.com/demo时,我想重定向到example.com/us/demo。这里的单词demo只是变量。我怎么做呢?
我的.htaccess代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /tr/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /tr/index.php [L]
</IfModule>
6mw9ycah

6mw9ycah1#

在现有指令之前尝试以下操作(例如,在<IfModule>部分.之前 *):

# Redirect "/" to "/en/"
RewriteRule ^$ /en/ [R,L]

# Redirect "/demo" to "/us/demo"
RewriteCond %{REQUEST_URI} !^/(en|us)/
RewriteRule (.*) /us/$1 [R,L]

第一个规则将example.com/重定向到example.comn/en/。第二个规则将所有其他内容重定向到/us/<url>,前提是URL路径尚未开始/en//us/
如果您还需要对静态资产进行例外处理......例如,是否还应重定向对/assets/images/img.png的请求?然后在第二个规则中添加一个附加条件(作为第二个条件):

# Redirect "/demo" to "/us/demo" (and exclude static assets)
RewriteCond %{REQUEST_URI} !^/(en|us)/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /us/$1 [R,L]

请注意,这些是302(临时)重定向。

相关问题