gpt4 book ai didi

apache - 条件重写库

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

我正在使用 Apache 2.4 和 mod_rewrite ,我有一个无法解决的问题。

我有一个.htaccess文件包含

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

... RewriteRules ...
</IfModule>

这个效果很好。现在我需要执行以下操作:如果有人以http://my.web.page.com访问我的网站,我需要RewriteBase /如上例所示。但如果有人以 http://192.168.1.10/xyz 的身份访问该网站,我需要RewriteBase /xyz相反。

我想我可以使用<If expression>...</If>来实现这一点,但我无法正确编写表达式。

xyz是一个固定的字符串。它不必从 URL 复制,但可以硬编码在 RewriteBase /xyz 中。命令。

我该怎么做?

编辑

@anubhava 建议了一个表达式,但我无法使用它。所以我尝试了一些非常简单的<If...>仅使用 RewriteBase / 的语句声明。

我现在非常非常困惑。

尝试 1

RewriteEngine On
RewriteBase /

<If "false">
RewriteBase /
</If>

这有效。到目前为止,一切都很好。现在让我们启用条件:

尝试 2

RewriteEngine On
RewriteBase /

<If "true">
RewriteBase /
</If>

这不起作用。因此启用条件会产生影响。也许两个RewriteBase语句导致代码失败。

尝试3

RewriteEngine On

<If "true">
RewriteBase /
</If>

不,这仍然不起作用。也许仅仅是条件的存在就是一个问题?

尝试4

RewriteEngine On
RewriteBase /

<If "true">
#RewriteBase /
</If>

这有效。所以条件本身是无害的。我就是写不出来RewriteBase里面。

为了完整起见,我使用的重写规则是:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Apache错误日志不包含任何错误信息。

第二次编辑

根据@anubhava的建议,我设法让它发挥作用:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# case 1
RewriteCond %{HTTP_HOST} =my.web.page.com
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

# case 2
RewriteCond %{HTTP_HOST} ^192\.168\.
RewriteRule ^(.*)$ xyz/index.php?/$1 [L,QSA]

最佳答案

根据您编辑的问题,这些规则应该有效:

RewriteEngine On 
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# case 1
RewriteCond %{HTTP_HOST} =my.web.page.com
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

# case 2
RewriteCond %{HTTP_HOST} ^192\.168\.
RewriteRule ^(.*)$ xyz/index.php?/$1 [L,QSA]

关于apache - 条件重写库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33281125/

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