好吧,我已经浪费了很多时间试图弄清楚这一点,但是我越是尝试学习重写规则,我似乎就越不了解发生了什么。我需要为基于 codeigniter 的项目修复一些重写规则。
该应用程序是一个多语言 CMS,它基本上适用于模块、页面和帖子,并且在.htaccess
文件中我需要检查 url 是页面还是帖子并重定向到适当的控制器。
到目前为止,在我的.htaccess
文件中,我有以下内容:
#if I'm on the homepage and i have a language id
RewriteCond $1 ^([a-z]{2})/?$
RewriteRule ^(.*)$ index.php?homepage/index/$1 [PT,L]
#if module - this works ok when there is no language id
RewriteCond $1 ^(gallery|post|products)
RewriteRule ^(.*)$ index.php?$1 [PT,L]
# Rewrite all other URLs to index.php/URL - page controller
RewriteRule ^(.*)$ index.php?page/show/$0 [PT,L]
使用上面的代码,如果我输入
http://mydomain.com/gallery/something/9
一切都很好,花花公子,如果我像这样添加语言ID:
http://mydomain.com/en/gallery/something/9
它不再起作用,并且我从页面控制器收到页面未找到/404 错误(在 .htaccess 末尾重定向)。
因此,假设我的 url 看起来像这样:
http://mydomain.com/gallery/something/9
http://mydomain.com/en/gallery/something/25
http://mydomain.com/fr/post/something/31
我需要以某种方式将这些网址重定向到
http://mydomain.com/gallery/something/9
http://mydomain.com/en/gallery/somethingelse/25
http://mydomain.com/fr/post/somethingelse/31
请注意,有时我有语言 ID,有时我没有。这是我应该使用 htaccess 做的事情吗?Codeigniter 路由是更好的选择吗?感谢您对堆栈溢出的任何帮助 :)