如何解决在 httpd.conf 中设置适用于所有服务站点的重写规则
www.site1.com
www.site2.com
...
我想在 httpd.conf(或我将包含在 httpd.conf 中的另一个文件)中设置我的 rewriterule,以便它一次适用于所有网站,而不必为每个网站单独设置。
>这不起作用:
<Directory "${INSTALL_DIR}/www/">
Options Includes FollowSymLinks
AllowOverride none
Require all granted
RewriteRule ^/news/article/(.*)/(.*)$ news/article.PHP?id=$1
</Directory>
这有效:
<Directory "${INSTALL_DIR}/www/site1/">
RewriteRule ^news/article/(.*)/(.*)$ #news/artile.PHP?id=$1
</Directory>
<Directory "${INSTALL_DIR}/www/site2/">
RewriteRule ^news/article/(.*)/(.*)$ #news/artile.PHP?id=$1
</Directory>
所以基本上我可能需要添加一些 Rewriterule [此处的内容]/news/article/(.)/(.)$ news/article.PHP?id =$1 所以它适用于所有网站的 www-dir。
可能是我遗漏了一些愚蠢的东西......我已经尝试了一些,但我无法让它工作。非常感谢任何帮助!
编辑:这是供将来参考的解决方案。 在 vhosts 文件中:
<Virtualhost site1>
...
<Directory "${INSTALL_DIR}/www/site1">
Include "${APACHE_DIR}/conf/extra/siterules.conf"
</Directory>
...
</Virtualhost>
<Virtualhost site2>
...
<Directory "${INSTALL_DIR}/www/site2">
Include "${APACHE_DIR}/conf/extra/siterules.conf"
</Directory>
...
</Virtualhost>
在 siterules.conf 中:
RewriteRule ^news/article/(.*)/(.*)$ #news/artile.PHP?id=$1
and some other rules if you want.
就是这样 :-) 您在一处更改规则,它适用于所有网站。
非常感谢@arkascha 为我指明了正确的方向。
解决方法
通常使用单独的虚拟主机实现单独的站点。如果是这样,那么我通常使用包含共享规则或指令的配置文件,这些规则或指令包含在所有虚拟主机定义中。这允许在单个位置调整规则,同时将它们应用于所有包括虚拟主机。
如果您不对不同的位置执行不同的规则(注意:位置,而不是主机...)那么事情就更简单了:您可以简单地在目录块之外实施规则。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。