SetEnvIf Request_URI Apache

时间:2015-11-26 15:14:05

标签: php apache .htaccess mod-rewrite url-rewriting

我试图根据请求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。

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]