![基于语言的 RewriteRule,例如 .htaccess 中的 mysite.com/en/](https://linux22.com/image/774657/%E5%9F%BA%E4%BA%8E%E8%AF%AD%E8%A8%80%E7%9A%84%20RewriteRule%EF%BC%8C%E4%BE%8B%E5%A6%82%20.htaccess%20%E4%B8%AD%E7%9A%84%20mysite.com%2Fen%2F.png)
我正在尝试在 .htaccess 中编写重定向指令,以便在内部转发所有用户请求,如下所示:
- 语言文件夹中的每个请求都应使用语言查询字符串重定向到请求的文件:
example.com/en/contact.php -> example.com/contact.php?lang=en
- 将任何没有语言路径的请求重定向到默认语言文件夹,如下所示:
example.com -> example.com/en
- 如果输入的地址带有尾部斜杠,则删除该斜杠:
example.com/en/ to example.com/en
- 对于文件夹项目,每个请求都应通过相应的查询字符串指向 view-project.php 文件:
example.com/en/projects/test -> example.com/view-project.php?lang=en&path=test
这是我的尝试,但如果请求中没有尾随斜杠,它就无法工作,例如:http://www.example.com/de并且不会重定向http://www.example.com到默认语言文件夹。
RewriteEngine On
RewriteRule ^(en|de)/(.*)$ $2?lang=$1 [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^projects/([^/\.]+)/?$ view-project.php?path=$1 [QSA,L]
我怎样才能实现这个目标?
这可能是重复的,对此我深表歉意。我到处搜索,阅读了大约 100 篇帖子,但没有找到我要找的东西。