【发布时间】:2014-06-14 01:50:20
【问题描述】:
我有以下情况:
我们的实际 URL 结构如下:
http://www.silentdivers.com/index.php?lang=en 英语,fr 法语,ge fr 德语
现在我喜欢 - 或者我想你建议什么是最好的方法:
http://www.silentdivers.com/de/ 用于德语的 index.php
等等。
我需要帮助如何在 htaccess 文件中执行此操作。
【问题讨论】:
我有以下情况:
我们的实际 URL 结构如下:
http://www.silentdivers.com/index.php?lang=en 英语,fr 法语,ge fr 德语
现在我喜欢 - 或者我想你建议什么是最好的方法:
http://www.silentdivers.com/de/ 用于德语的 index.php
等等。
我需要帮助如何在 htaccess 文件中执行此操作。
【问题讨论】:
您的重写规则(在 .htaccess 中)必须如下所示:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]{2})/$ /index.php?lang=$1
^/ 表示以斜线开头([a-z]{2}) 是用引号括起来的两个小写字母(语言代码),以将它们捕获为 $1
/$ 是“以斜线结尾”您可以添加另一个规则来处理您想要执行此操作的其他文件。例如,这将使/en/discoverscubadiver 工作通过将其转发到discoverscubadiver.php?lang=en:
RewriteRule ^([a-z]{2})/([a-z]+)$ /$2.php?lang=$1
【讨论】:
RewriteEngine 需要出现在任何 RewriteCond 或 RewriteRule 之前。如果您在 .htaccess 中执行此操作,您的重写规则不应以 / 开头,因为这是在该上下文中假定的。我会稍微更新一下我的答案。