的.htaccess多个重写不工作
问题描述:
编辑 .htacess:的.htaccess多个重写不工作
RewriteEngine On
RewriteRule ^(.*)/(.*)/(.*)/(.*)/ api.php/$1/$2?param=$3&key=$4 [L]
RewriteRule ^(.*)/(.*)/(.*)/ api.php/$1/$2?param=$3 [L]
RewriteRule ^(.*)/(.*)/ api.php/$1/$2 [L]
这给出了这样的错误:
Internal Server Error
更新
此代码:
RewriteEngine On
RewriteRule ^(.*)/(.*)/(.*)/(.*)/ api.php/$1/$2?param=$3&key=$4 [L]
RewriteRule ^(.*)/(.*)/(.*)/ api.php/$1/$2?param=$3 [L]
只有当该行添加它崩溃:
RewriteRule ^(.*)/(.*)/ api.php/$1/$2 [L]
答
这导致500内部错误,因为你的规则是无限循环。这是因为您的模式^(.*)/(.*)/
也匹配重写的URI api.php/<whatever>/
。
你需要跳过现有的文件和目录的所有规则的顶部:
RewriteEngine On
# skip all files and directories from rewrite rules below
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule^- [L]
RewriteRule ^(.*)/(.*)/(.*)/(.*)/ api.php/$1/$2?param=$3&key=$4 [L,QSA]
RewriteRule ^(.*)/(.*)/(.*)/ api.php/$1/$2?param=$3 [L,QSA]
RewriteRule ^(.*)/(.*)/ api.php/$1/$2 [L,QSA]
我也建议使用锚$
在你的模式,以进一步保障。
+0
我已经完成了我想要的 –
+0
如果您注意到我也在我的回答中提出了使用'$'的建议 – anubhava
答
RewriteEngine On
RewriteRule ^(.*)/(.*)/(.*)/(.*)/ api.php/$1/$2?organisation=$3&key=$4 [L]
RewriteRule ^(.*)/(.*)/(.*)/ api.php/$1/$2?organisation=$3 [L]
RewriteRule ^(.*)/(.*)/$ api.php/$1/$2 [L]
上述的解决方案可能也正在
更具体的规则应该首先出现。 – hjpotter92
@ hjpotter92 改为(给出了一个内部服务器错误):(。*)(*)(*)(。*)? RewriteEngine叙述在 重写规则^//// api.php/$ 1/$ 2 PARAM (。*)/(。*)/(。*)/(。*)/ api.php/$ 1/$ 2?param = $ 3 [L] RewriteRule ^(。*)/(。 *)/ api.php/$ 1/$ 2 [L] –
@ hjpotter92我对新代码进行了评论 –