我正在构建简单的php mvc应用程序,但是.htaccess有问题,看起来它忽略了标志而不想运行下一行
Options -MultiViews
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(en|sk)(\/)(.+)$ index.php?url=$3&lang=$1 [C]
RewriteRule ^(.+)$ index.php?url=$1 [C]
我的目标是在多语言网站上添加http://example.com/lang/something这样的地址,我将其用作mvc骨架link to github repo,但行为不端
去http://127.0.0.10
时,一切都好
转到http://127.0.0.10/en/home
页面也有效
转到http://127.0.0.10/home
页面时无效
然后当我删除第一个规则或交换规则顺序时,转到http://127.0.0.10/home
开始工作,但是当没有http://127.0.0.10/en/home
时,我在第一种情况下看不到这里错误已经到位因为app认为“ en“是控制者,但在第二种情况下是什么?
答案 0 :(得分:1)
重写条件仅适用于下一个RewriteRule
,因此第二个RewriteRule
没有任何条件。
试试这段代码:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]
RewriteRule ^(en|sk)/(.+)$ index.php?url=$2&lang=$1 [L,QSA]
RewriteRule ^(.+)$ index.php?url=$1 [L,QSA]