我正在尝试根据端点之后的输入修改我的.htaccess文件以链接到三个不同的位置:
这是我的.htaccess文件:
Options -Indexes
RewriteEngine On
RewriteRule ^api/(.*) ./api/index.php [R,L]
RewriteRule ^([a-zA-Z0-9]{7})$ index.php?l=$1 [L]
RewriteRule ^(.+)$ everythingelse.php [L]
即使我指定了[L]标志,我似乎总是被重定向到everythingelse.php路由,即使我有7个字符串。
如何重写才能正确匹配?
答案 0 :(得分:1)
您的规则不止一次循环和执行。 L
标志仅断开当前循环,但mod_rewrite
可以再循环并执行所有匹配规则。
Options -Indexes
RewriteEngine On
# skip all files and directories from rewrite rules below
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^api/(.*)$ /api/index.php [R,L]
RewriteRule ^([a-zA-Z0-9]{7})$ index.php?l=$1 [L,QSA]
RewriteRule . everythingelse.php [L]