我试图根据请求uri设置不同的规则。简而言之,我想重定向到基于uri的页面。这是一个简单的测试,我正在探索基于部分uri设置不同的规则。这就是我到目前为止所做的:
Options -Indexes +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
SetEnvIf Request_URI ^(CLIENT_)([0-9]+)$ CLIENT=$1
RewriteCond %{CLIENT:CLIENT_1}
RewriteRule ^(*)$ test1.php [L]
RewriteCond %{CLIENT:CLIENT_2}
RewriteRule ^(*)$ test2.php [L]
我希望这能表明:
test1.php如果我的网址是https://www.domain.com/CLIENT_1
test2.php如果我的网址是https://www.domain.com/CLIENT_2
但我收到错误500
RewriteCond:错误的参数行'%{CLIENT:CLIENT_1}'
我做错了什么?谢谢。 注意:这是使用 Apache 2.4
编辑:从评论中修改。这就是我现在所拥有的。
Options -Indexes +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
SetEnvIf Request_URI ^(CLIENT_)([0-9]+)$ CLIENT=$1
RewriteCond %{ENV:CLIENT} ^CLIENT_1$
RewriteRule - test1.php [L]
RewriteCond %{ENV:CLIENT} ^CLIENT_2$
RewriteRule - test2.php [L]
在此服务器上找不到请求的URL / CLIENT_1。
答案 0 :(得分:0)
因此,我们上面讨论的结果似乎是最终版本:
Options -Indexes +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
SetEnvIf Request_URI ^(CLIENT_[0-9]+)$ CLIENT=$1
RewriteCond %{ENV:CLIENT} ^CLIENT_1$
RewriteRule ^ test1.php [L]
RewriteCond %{ENV:CLIENT} ^CLIENT_2$
RewriteRule ^ test2.php [L]
RewriteRule ^ test.php [L]