微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多语言网站的mod_rewrite规则

如何解决多语言网站的mod_rewrite规则

我正在创建多语言网站,我需要为搜索引擎友好的URL编写重写规则。
我有太多需要处理的案件。我有几个问题:
1- URL中可能存在语言ID。
2-有6种语言。我需要在domain.com之后捕获所有2个字符的首个文件
3-我将使用.html或将URL用作文件夹。因此,.html可能存在于URL的末尾,反斜杠可能存在于URL的末尾。
4-我需要重写原始的.PHP文件,以防它在语言文件夹之后使用。
第一种情况:

domain.com/about
domain.com/about.html
domain.com/about/
domain.com/en/about
domain.com/en/about.html
domain.com/en/about/
domain.com/en/about.PHP

domain.com/about.PHP?mylang=langId (if language presented in URL)

我使用以下规则:

RewriteRule ^([a-z0-9]{2})/about?(/|.html|.PHP)?$ about.PHP?mylang=$1&%{QUERY_STRING} [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)(/|.html|.PHP)$ $1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.PHP -f
RewriteRule (.*) $1.PHP [L]

但是在以下情况下会触发500:

domain.com/about/

第二种情况:

domain.com/products/product/productId/productName_SEO_optimized
domain.com/products/product/productId/productName_SEO_optimized.html
domain.com/products/product/productId/productName_SEO_optimized/
domain.com/en/products/product/productId/productName_SEO_optimized
domain.com/en/products/product/productId/productName_SEO_optimized.html
domain.com/en/products/product/productId/productName_SEO_optimized/
domain.com/en/products.PHP?id=productId&type=product

domain.com/products.PHP?mylang=langId&id=productId&type=product

目前,我将这些代码用于这些情况

RewriteRule ^([a-z0-9]{2})/products?(/|.html|.PHP)?$ products.PHP?mylang=$1&%{QUERY_STRING} [NC]
RewriteRule ^([a-z0-9]{2})/products/product/?([^/.]+)?/?(.*)$ products.PHP?mylang=$1&id=$2&type=product&%{QUERY_STRING} [NC]
RewriteRule ^([a-z0-9]{2})/products/category/?([^/.]+)?/?(.*)$ products.PHP?mylang=$1&id=$2&type=cat&%{QUERY_STRING} [NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.PHP -f
RewriteRule (.*) $1.PHP [L]

但是如果未在URL中指定语言,则会触发500内部错误 示例:

domain.com/products/product/productId/productName_SEO_optimized
domain.com/products/product/productId/productName_SEO_optimized.html
domain.com/products/product/productId/productName_SEO_optimized/

我很努力,没有运气去处理所有案件。
我知道太多了但真的希望有人能帮助我。
最好的问候

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。