gpt4 book ai didi

apache - 在 htaccess 文件中写入 if 条件以进行 url 重写

转载 作者:行者123 更新时间:2023-12-02 20:45:47 26 4
gpt4 key购买 nike

我的URL重写的htaccess代码如下

RewriteEngine On
RewriteBase "/myekc/"
RewriteCond %{REQUEST_URI} ^/myekc/
RewriteCond %{REQUEST_FILENAME} !/(css|images|js)/
RewriteRule "/t/pepsi/(.*)$" "http://192.168.0.175:68/$1" [P]
RewriteRule "^(.*(?:xampp|htdocs)/)(.+)$" "http://192.168.0.179/myekc/t/pepsi/$2" [R,QSA,L]

这适用于 1 个 URI。我现在想写if条件,以这样的方式来写多个uri例如:

<If "req('uri') == '/t/pepsi/'">
RewriteBase "/myekc/"
RewriteCond %{REQUEST_URI} ^/myekc/
RewriteCond %{REQUEST_FILENAME} !/(css|images|js)/
RewriteRule "/t/pepsi/(.*)$" "http://192.168.0.175:68/$1" [P]
RewriteRule "^(.*(?:xampp|htdocs)/)(.+)$" "http://192.168.0.179/myekc/t/pepsi/$2" [R,QSA,L]
</if>
<If "req('uri') == '/t/coke/'">
RewriteBase "/myekc/"
RewriteCond %{REQUEST_URI} ^/myekc/
RewriteCond %{REQUEST_FILENAME} !/(css|images|js)/
RewriteRule "/t/coke/(.*)$" "http://192.168.0.175:68/$1" [P]
RewriteRule "^(.*(?:xampp|htdocs)/)(.+)$" "http://192.168.0.179/myekc/t/coke/$2" [R,QSA,L]
</if>

最佳答案

您不需要明确的 <If>这里的条件。使用 mod_rewrite,如果您需要将指令应用于不同的 URL,只需通过指定适当的 RewriteRule 来包含不同 URL 的该指令。 模式。例如:

RewriteEngine On

RewriteRule ^(.*(?:xampp|htdocs)/)(.+)$ http://192.168.0.179/myekc/t/pepsi/$2 [R,L]

RewriteCond %{REQUEST_URI} ^/myekc/
RewriteCond %{REQUEST_FILENAME} !/(css|images|js)/
RewriteRule /t/pepsi/(.*)$ http://192.168.0.175:68/$1 [P]

RewriteCond %{REQUEST_URI} ^/myekc/
RewriteCond %{REQUEST_FILENAME} !/(css|images|js)/
RewriteRule /t/coke/(.*)$ http://192.168.0.175:68/$1 [P]

请注意 RewriteBase指令只能在 .htaccess 中使用一次文件(最后一个实例获胜并控制整个文件)。但您在发布的指令中根本没有使用它,因此我暂时将其完全删除。

但是,目前,这两个规则执行相同的操作,因此可以组合使用:

RewriteCond %{REQUEST_URI} ^/myekc/
RewriteCond %{REQUEST_FILENAME} !/(css|images|js)/
RewriteRule /t/(?:pepsi|coke)/(.*)$ http://192.168.0.175:68/$1 [P]
<小时/>

I need if condition because, i want to set cookie value to each pattern. So that the value of the cookie will be the path "/t/pepsi/" and "/t/coke". If i use together, the last cookie value is considered. Example: Want to set Header set Set-Cookie "mycookie=/t/pepsi/" "expr=-z %{req:Cookie}"and Header set Set-Cookie "mycookie=/t/coke/" "expr=-z %{req:Cookie}".

您仍然不需要明确的 <If>条件,因为 mod_rewrite 允许您设置 cookie,这在本例中可能更容易使用(因为您已经在使用 mod_rewrite 来捕获路径)。例如:

RewriteRule (/t/(?:pepsi|coke)/)(.*)$ http://192.168.0.175:68/$1 [CO=test:$1:.example.com,P]

CO cookie 上的 ( RewriteRule ) 标志指令设置 cookie test (在域 .example.com 上)请求中 URL 路径的值(即“/t/pepsi/”或“/t/coke/”)。

引用:
https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_co

关于apache - 在 htaccess 文件中写入 if 条件以进行 url 重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45035133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com