多语言网站的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 (将#修改为@)