问题描述
我正在创建多语言网站,我需要为搜索引擎友好的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 (将#修改为@)