Codeigniter 3多区域网站,从特定URL中删除跟踪斜杠

js81xvg6  于 2023-06-27  发布在  其他
关注(0)|答案(1)|浏览(113)

我正试图从我的网站之一,它的工作原理,但要保持尾随斜杠在几个网址,并希望从所有剩余的删除。网站内容可根据您所在的地区或您选择的地区访问。
该网站具有特定于区域的设置,下面是网站结构设置示例
印度-example.com/in/美国-example.com/us/阿联酋-example.com/ae/国际-example.com
其他页面,如

example.com/in/products
example.com/us/blogs
example.com/product

我想在像example.com/us/example.com/uk/这样的区域后面保留尾随斜杠
但希望从所有剩余的URL中删除

example.com
example.com/us/products
example.com/us/blogs
example.com/blogs

我的现有代码将删除所有URL中的尾随斜杠

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.*)/$
RewriteRule ^(.+)/$ $1 [R=307,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

如何在codeigniter 3设置中实现这一点?

9avjhtql

9avjhtql1#

您可以在.htaccess中使用条件语句来适应不同的区域。

RewriteEngine On

# Remove trailing slash from URLs except for region-specific URLs
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/(in|us|ae)/ [NC]
RewriteRule ^(.+)/$ /$1 [L,R=301]

# Add trailing slash to region-specific URLs
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(in|us|ae)/ [NC]
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

第一组规则从不特定于区域的URL中删除尾部斜杠。它检查请求是否不是针对现有目录,以及请求URI是否不是以/in/、/us/或/ae/开头。如果这两个条件都满足,则使用301重定向删除尾部斜杠。
第二组规则在特定于区域的URL后面添加一个斜杠。它检查请求是否不是针对现有目录,以及请求URI是否以/in/、/us/或/ae/开头。如果这两个条件都满足,则使用301重定向添加尾随斜杠。

相关问题